首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Multer MulterS3和AWS SDK,NodeJS上传文件到Digitalocean Spaces

使用Multer MulterS3和AWS SDK,NodeJS上传文件到Digitalocean Spaces
EN

Stack Overflow用户
提问于 2018-03-25 07:20:45
回答 1查看 1.6K关注 0票数 0

我正在尝试使用express API将文件上传到我的Digitalocean Space。下面的upload方法中的log永远不会被调用,总是返回成功状态。在路由req.files中,文件通过,但没有文件上传。我找不到任何可以提供更好结果的不同方法的信息。

我的上传路线:

代码语言:javascript
运行
复制
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从前端上传功能:

代码语言:javascript
运行
复制
request
      .post('http://localhost:5000/api/uploads')
      .attach('upload', <image file>)
      .then(() => {
        console.log('done');
      });
EN

回答 1

Stack Overflow用户

发布于 2018-03-25 10:12:02

我想通了..。我将express-fileupload实现为中间件,并将其替换为multer。Express-fileupload正在干扰multer的进程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49470974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档