繁体   English   中英

如何使用 multer 将文件上传到 S3 而无需 multer 在本地存储文件副本?

[英]How can I upload files to S3 using multer without having multer store a copy of the files locally?

我正在尝试使用接受多部分/表单数据的 api 将文件上传到 S3,但不使用 multer 主体是空的,但使用后一切都很好。
但是,multer 在本地存储每个文件的副本,这不是我真正想要的。
我也不想使用 multer-s3-v3,因为我正在尝试使用 socket.io 发回文件的进度,如果我使用它,它将无法工作。
关于如何防止 multer 保存副本的任何想法? 或我应该使用的任何其他方法?

这是我的代码:
路线

const multer  = require('multer')
const upload = multer({ dest: 'images/' });
router.post('/image-upload', upload.single('image'), authController.imageUpload);

api

exports.imageUpload = async (req, res) => {
  const imagePath = req.file.path;
  console.log(imagePath);
  const blob = fs.readFileSync(imagePath);
  const uploadedImage = await s3
    .upload({
      Bucket: process.env.AWS_BUCKET,
      Key: `images/${req.file.originalname}`,
      Body: blob,
    }).on('httpUploadProgress', function(progress) {
      let progressPercentage = Math.round(progress.loaded / progress.total * 100);
      console.log(progressPercentage);
    })
    .promise();
  if (uploadedImage) {
    return res.status(200).send({
      message: "Image uploaded successfully",
      image: uploadedImage.Location.substring(36),
    });
  }
};

正如您所说“我也不想使用 multer-s3-v3,因为我正在尝试使用 socket.io 发回文件的进度”然后使用 cloudinary 轻松存储文件并且它有点免费做检查这个链接https://cloudinary.com/blog/node_js_file_upload_to_a_local_server_or_to_the_cloud

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM