我正在尝试使用express API将文件上传到我的Digitalocean Space。下面的upload方法中的log永远不会被调用,总是返回成功状态。在路由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');
      });发布于 2018-03-25 10:12:02
我想通了..。我将express-fileupload实现为中间件,并将其替换为multer。Express-fileupload正在干扰multer的进程。
https://stackoverflow.com/questions/49470974
复制相似问题