Express 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;
スーパーエージェントを使用したフロントエンドからのアップロード機能:
request
.post('http://localhost:5000/api/uploads')
.attach('upload', <image file>)
.then(() => {
console.log('done');
});