How to upload file in Aws S3 bucket

 const { createReadStream, filename, mimetype, resolve, reject } = await file;
  // const stream = createReadStream();

  // console.log("stream", resolve);
  const stream = createReadStream();

  const out = require("fs").createWriteStream("local-file-output.txt");
  stream.pipe(out);
  await streamPromise(out);

  console.log("CREATESTREAM", createReadStream);

  const key = uuid();

  return new Promise((resolve, reject) => {
    s3.upload(
      {
        ...s3DefaultParams,
        Body: encoding,
        ACL: "public-read",
        Key: `${filename}`,
      },
      (err, data) => {
        if (err) {
          console.log("error uploading...", err);
          reject(err);
        } else {
          console.log("successfully uploaded file...", data);
          resolve(data);
        }
      }
    );
  });

image

How can read createReadStream: [Function: createReadStream] this function

i used this function for upload image to AWS S3, try this.

const uploadFile = async (file) => {
  const { createReadStream, filename } = await file;

  const upload = {
    Bucket: process.env.AWS_BUCKET,
    ACL: 'public-read',
    ContentDisposition: 'inline',
    Key: filename,
    Body: createReadStream()
  };

  return new Promise((resolve) => {
    s3.upload(upload, (err, data) => {
      if (err) {
        console.log('There was an error uploading your photo: ', err);
        throw new Error('There was an error uploading your photo: ', err);
      } else {
        console.log('Photo uploaded!.', data);
        resolve(data.key);
      }
    });
  });
}