Actualmente estoy trabajando en una Api solo para conocer Node.js, ya que actualmente lo estoy aprendiendo.
Creé con éxito una ruta para cargar un archivo mp3 en un depósito s3, pero cuando intento obtener un archivo de S3 en formato Uint8List, no obtengo los resultados que quiero. (Flutter requiere que envíe una Uin8List, si esta no es una buena solución, también puedo convertirla en una Ui8List en el lado del cliente)
Puedo crear una secuencia legible y, cuando la secuencia recibe fragmentos, la registra en la consola. Pero no estoy muy seguro de cómo puedo enviar los datos al cliente en los búferes, solo puedo enviar los datos en una lista grande, pero por supuesto, por eficiencia, esta no es la mejor opción.
¿Alguien puede ayudarme? Este es el código que se tiene actualmente:
var AWS = require('aws-sdk'); AWS.config.update( { accessKeyId: AWS_ACCESS_KEY, secretAccessKey: AWS_SECRET_ACCESS_KEY, region: AWS_REGION } ); var s3 = new AWS.S3(); router.get('/assets/:fileKey', auth, async function (req, res, next) { try { const fileKey = req.params.fileKey; const options = { Bucket: AWS_BUCKET_NAME, Key: fileKey, }; const chunks = []; const getAsBytes = new Promise((resolve, reject) => { const readStream = s3.getObject(options).createReadStream(); readStream.on('data', (chunk) => { // console.log('-------new data received--------') // console.log(chunk); chunks.push(chunk); // res.write(chunk); }); readStream.on('error', reject) readStream.on('end', resolve); }).catch((err) => next(err)); await getAsBytes; res.write(Uint8Array.from(chunks)); res.end(); } catch (error) { next(error); } });Cuando trato de canalizar el flujo de lectura, obtengo una respuesta llena de signos de interrogación y símbolos extraños.