【问题标题】:Random file upload with multer & node.js api使用 multer 和 node.js api 随机上传文件
【发布时间】:2020-09-27 11:27:40
【问题描述】:

用于上传任何名称或数量的图片。

目前我正在我的项目中使用 multer 处理文件上传。 当我知道字段名称时,我可以处理多个文件上传。我将每个文件的路径存储在 MongoDB 和 mongoose 中。下面我与已知字段名称分享了知识,例如 image & images

在路由器中:

      uploadImages.fields([
                   { name: 'image',  maxCount: 1 },
                   { name: 'images', maxCount: 8 }
                ])

现在的问题是我有 RANDOM FILE 并且 我不知道所有字段名称。比如可以有 10 个文件,每个字段可以有多个文件, 如横幅、滑块、标志、图像、封面等。 我该如何处理这种情况?当我不知道每个字段中的字段名称和图像数量时

【问题讨论】:

  • 显示一个例子。这个文件听起来一点也不随意。听起来你只需要弄清楚如何遍历一个对象......不确定这与随机任何东西有什么关系,甚至是文件。
  • 问题是我对此没有适当的了解。我必须处理随机图像,比如可能有很多文件名,我不知道。上面的例子是我通常如何处理文件。但是,如果我在不知道名称的情况下必须处理文件,那我该怎么办。
  • 您必须对文件有所了解......您将如何确定什么是字符串与什么是文件名?如果您甚至无法发布您尝试解析的示例,则无法帮助您。
  • 就像我有一个 api 请求。它具有动态字段。我将通过那个api存储一个模板信息,会有不同的滑块图像。像类别滑块图像,首页滑块,底部滑块,切换滑块。等等。我必须获取这些滑块图像并将它们存储在本地和 mongodb 的路径中。
  • 但是不知道会有多少滑块文件组。可以只有首页滑块,也可以是 10 个其他滑块组。每个滑块组将有多个图像,

标签: node.js mongodb express mongoose multer


【解决方案1】:

所以答案很简单。我用的是嘟嘟声。 muter 有 any() 字段。

any() :接受通过网络传输的所有文件。一组文件将存储在 req.files 中

它处理所有传入的文件,带有任何字段名称:

const fileUpload = multer({
storage: multer.diskStorage ({
    destination: (req, file, cb)=>{
        cb(null, 'uploads/slider')
    },
    filename : (req, file, cb) =>{
        cb(null, file.filename)
    }
})
})

module.exports = fileUpload

现在在路由器中:

const upload = require('../middleware/slider')
router.post('/', upload.any(),  ......)
upload.any()

获取控制器中的所有文件以将路径存储在数据库中

exports.controller = async (req, res, next)=>{
    const files = req.files
    console.log(files)
    // files will contain an array of file, all the file you uploaded.
    //to get the path of each
    let sliders = []

    if(files){
        sliders =  files.map(file=>{
            return {field_name:file.fieldname , path :file.path }
        })
    }
    console.log(sliders) 
}

所以我是如何解决答案的。 any() 归档保存了我的一天。

【讨论】:

    猜你喜欢
    • 2017-12-03
    • 2023-04-11
    • 2016-03-06
    • 2021-03-27
    • 2016-03-09
    • 2018-08-12
    • 2016-10-22
    • 2016-06-02
    • 2016-05-22
    相关资源
    最近更新 更多