我正在尝试使用快速API将文件上传到我的Digitalocean Space。永远不会调用以下上载方法中的日志,并始终返回成功状态。在路由req.files中,文件通过,但没有上传文件。我发现任何显示不同方法的信息都能提供更好的结果。
我的上传路线:
const express = require('express');
const AWS = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');
const api = express.Router();
AWS.config.update({
accessKeyId: process.env.SPACES_ACCESS_KEY_ID,
secretAccessKey: process.env.SPACES_ACCESS_KEY,
});
const spacesEndpoint = new AWS.Endpoint('nyc3.digitaloceanspaces.com/uploads');
const s3 = new AWS.S3({
endpoint: spacesEndpoint,
});
const upload = multer({
storage: multerS3({
s3,
bucket: '<my bucket>',
acl: 'public-read',
// eslint-disable-next-line
key: function (req, file, cb) {
console.log(file);
cb(null, file.originalname);
},
}),
}).single('upload');
api.post('/', (req, res, next) => {
console.log(req.files);
upload(req, res, err => {
if (err) {
console.log(err);
return res.status(400).json({ errors: err });
}
return res.status(200).json({ message: 'File uploaded successfully.' });
});
});
module.exports = api;
我的上传功能来自前端使用superagent:
request
.post('http://localhost:5000/api/uploads')
.attach('upload', <image file>)
.then(() => {
console.log('done');
});
答案 0 :(得分:1)
我想通了......我把express-fileupload实现为一个中间件,我用multer替换。 Express-fileupload干扰了multer的进程。