我使用multer-s3将文件上传到was S3。当我上传一个文件时,一切正常,我从来没有出现过错误,但是大多数教程都没有提到如何处理上传文件可能会出现问题的情况。
我上传的内容如下
var upload = multer({
storage: multerS3({
s3: s3,
bucket: 'my bucket',
key: function (req, file, cb) {
console.log(file);
cb(null, file.originalname);
}
})
});我从
app.post('/File/Add' , storage_functions.upload.single('file'), function (req, res) {
console.log('file uploaded')
});multers3是否在上传时提供某种类型的响应。这对于访问错误很有用,但如果响应包含s3中的文件路径,也会很有用。
发布于 2018-11-20 06:23:59
您可以添加回调函数来处理错误。
const upload = storage_functions.upload.single('file');
app.post('/File/Add', function (req, res) {
upload(req, res, function (err) {
if (err) {
// your error handling goes here
}
});
});要查找更多详细信息,请访问multer documentation
发布于 2021-11-02 14:22:32
下面是我处理错误的方法:我创建了一个s3.js文件,其中包含multer-s3配置和错误处理程序
import S3 from 'aws-sdk/clients/s3.js'
import multer from 'multer'
import multerS3 from 'multer-s3'
import dotenv from 'dotenv'
dotenv.config()
const region = process.env.S3_REGION
const s3 = new S3({
region
})
// upload to S3 storage
export const uploadFiles = (req, res, next) => {
const upload = multer({
limits: { files: 6 },
storage: multerS3({
s3: s3,
bucket: process.env.S3_BUCKET_NAME,
metadata: function(req, file, cb) {
cb(null, { fieldName: file.fieldname })
},
key: function(req, file, cb) {
cb(null, `images/users/${ req.userId }/products/${ req.body.name }/${ new Date().toISOString() }-${ file.originalname }`)
},
})
}).array('photos', 6)
// Custom error handling for multer
upload(req, res, (error) => {
if (error instanceof multer.MulterError)
return res.status(400).json({
message: 'Upload unsuccessful',
errorMessage: error.message,
errorCode: error.code
})
if (error)
return res.status(500).json({
message: 'Error occured',
errorMessage: error.message
})
console.log('Upload successful.')
next()
})
}
现在,您可以在要将文件上传到的路由上使用此选项。
import express from 'express'
import { uploadFiles } from '../config/s3.js'
const router = express.Router()
router.post('/upload', uploadFiles, async(req, res) => {
console.log(req.files)
})
export default router
因为我将文件限制设置为6,所以当我尝试发送超过6个文件时,我将得到以下响应。

https://stackoverflow.com/questions/53374707
复制相似问题