Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

395
Vistas
s3.getObject(...).createReadStream is not a function

I am trying to send a file from my s3 bucket to the client with my NodeJS application. This is what I have so far:

import { S3 } from '@aws-sdk/client-s3';

const BUCKET_NAME = process.env.S3_BUCKET_NAME;

const s3 = new S3({
    region: 'ap-southeast-2',
    httpOptions: {
        connectTimeout: 2 * 1000,
        timeout: 60 * 1000,
    },
});

router.get('/download/:id', async (req, res) => {
    console.log('api: GET /download/:id');
    console.log('req.params.id: ', req.params.id);
    const result = await getRequiredInfo(req.params.id);
    if (typeof result !== 'number') {
        res.attachment(result.filename);
        await s3
            .getObject({
                Bucket: BUCKET_NAME,
                Key: result.location,
            })
            .createReadStream()
            .pipe(res);
    } else {
        res.sendStatus(result);
    }
});

And when I run this code, I receive this:

(node:11224) UnhandledPromiseRejectionWarning: TypeError: s3.getObject(...).createReadStream is not a function

I wondered around on SO and looks like others are working fine with the combination of getObject and createReadStream. Is there something I am missing at this point? How should I send a file as a stream in the response?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

.createReadStream() is a method in aws-sdk v2. @aws-sdk/client-s3 is part of aws-sdk v3.

To get the stream from the v3 you'll need to do the following:

const response = await s3.getObject({
    Bucket: BUCKET_NAME,
    Key: key,
});

response.Body.pipe(res);

For more information about aws-sdk v3: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-s3/

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda