【问题标题】:Uploading a file using multer in Node JS在 Node JS 中使用 multer 上传文件
【发布时间】:2021-07-25 13:26:44
【问题描述】:

您能否详细解释一下这些代码行中发生了什么? 为什么我们要在对象中存储一个带有回调的函数?

var storage = multer.diskStorage({


destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})
 
var upload = multer({ storage: storage })

【问题讨论】:

    标签: javascript html node.js web multer


    【解决方案1】:

    multer 库在想知道您要将上传文件放到哪个目录时会调用destination 函数。它会调用filename 函数,当它想知道你想为特定上传提供什么文件名时。

    这两个函数的原因是您可以选择检查传入请求以计算适合该特定请求的目录或文件名。例如,如果您想将某个特定用户上传的所有文件存储在该特定用户的目录中,您可能会查看 req.session 对象以确定正在上传的用户,然后您将计算适当的目录那个用户。

    destination 选项可以作为纯字符串而不是函数提供,如果该值是已知的并且对于所有请求都是恒定的。例如,您可以这样做:

    var storage = multer.diskStorage({
        destination: '/tmp/my-uploads',
        filename: function (req, file, cb) {
            cb(null, file.fieldname + '-' + Date.now())
        }
    })
    

    您可以通过回调而不是简单的返回值来传达最终结果的原因是您需要执行一些异步操作(例如在数据库中查找某些内容)以计算目录或文件名应该。通过调用他们提供的cb(...) 函数来传回结果,您可以执行异步操作并异步传回结果。

    【讨论】:

      猜你喜欢
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 2017-10-10
      • 2020-09-26
      • 2015-10-21
      • 2017-11-12
      相关资源
      最近更新 更多