[英]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.