【问题标题】:upload file different destinations based on the api post call根据 api post 调用上传文件不同的目的地
【发布时间】:2020-06-11 16:00:38
【问题描述】:

我是 Express js 的新手。我有两个上传按钮和两个单独的后调用来上传文件。我想根据api调用将文件上传到不同的位置。

第一个帖子 api 是 /app/upload1 第二个post api是/app/upload2

我有带有磁盘存储的 multer 对象。

var storage = multer.diskStorage(
{
  destination: (req, file, cb) => {
        cb(null, FILE_PATH},
  filename: (req, file, cb) => {
    cb(null, file.originalname)
  }
}

目前,文件存储在全局路径中。

我想改变 multer 使得: 使用 api 调用 /app/upload1 - 文件应存储在 upload1 目录中 & 使用 api 调用 /app/upload2 - 文件应存储在 upload2 目录中

有人可以帮忙吗?

【问题讨论】:

  • 我的应用程序发布调用如下:app.post('/api/v1/file-upload1', upload.single('fil'), fileUpload.file_upload1) 如何使用上传( {storage1}) 在这里?我尝试在上面的行中添加它,但没有奏效。

标签: node.js angularjs express


【解决方案1】:

在您的情况下,您需要两个存储用于两个单独的端点,试试这个:

var storage1 = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null,'path1'},
  filename: (req, file, cb) => {
    cb(null, file.originalname)
  }
})

var storage2 = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'path2'},
  filename: (req, file, cb) => {
    cb(null, file.originalname)
  }
})

app.post('/upload1', upload({storage1}))
app.post('/upload2', upload({storage2}))

【讨论】:

  • 我的应用程序发布调用如下:app.post('/api/v1/file-upload1', upload.single('fil'), fileUpload.file_upload1) 如何使用上传( {storage1}) 在这里?我尝试在上面的行中添加它,但没有奏效。
【解决方案2】:

使用 options destination 设置您要保存的目录:

var storage1 = multer.diskStorage(
{
  destination: (req, file, cb) => {
    cb(null, '/upload1'},
  filename: (req, file, cb) => {
    cb(null, file.originalname)
 }
}
var upload1 = multer({ storage: storage1 })
app.post('/app/upload1', upload1, function (req, res, next) {
    // todo
})
// var storage 2 = ...
// var upload2 = multer({ storage: storage2 })

参考link

谢谢。

【讨论】:

    猜你喜欢
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2018-04-18
    • 2013-10-30
    • 1970-01-01
    • 2020-07-31
    • 2021-09-24
    相关资源
    最近更新 更多