0

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');
      });
4

1 に答える 1