【问题标题】:Using multer cause error when running app运行应用程序时使用 multer 导致错误
【发布时间】:2016-05-18 04:54:23
【问题描述】:

我有使用 multer 模块的 express 节点应用程序 https://github.com/expressjs/multer

app.js 文件中,我输入了以下内容:

var mulStorage = require("./utils/store"),
    var upload = multer({
        storage: mul.storage,
        dest: 'uploads/'
    });
    app.use(upload.single('file'));

store.js 文件如下所示

var multer = require('multer');

var stor = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/')
    },
    filename: function (req, file, cb) {
        var filename = file.originalname;
        var fileExtension = filename.split(".")[1];
        cb(null, Date.now() + "." + fileExtension);
    }
})
module.exports = {
    stor: stor
}

当我使用邮递员运行请求时,出现以下错误:

错误:ENOENT:没有这样的文件或目录,打开 'c:\Users\c45669\WebstormProjects\App\uploads\1454935327214.zip'
  在错误(本机)

如果文件夹不存在,为什么multer不创建它??

如果我在根目录下创建上传文件夹手动这是工作...

顺便说一句, 当我更改以下内容并删除 storage: mul.storage, 这是可行的,但我需要存储来确定文件名...

    var upload = multer({
        //storage: mul.storage,
        dest: 'uploads/'
    });

即使我从 multer 对象中删除属性 dest 并只保留存储,我也会遇到相同的错误...

【问题讨论】:

  • 如答案中所述,multer 不会创建应手动或以编程方式创建的文件夹。假设存在上传文件夹,您是否还面临其他上传问题?

标签: javascript node.js express multipart multer


【解决方案1】:

如果文件夹不存在,为什么multer不创建??

这是在文档中(link):

注意:在将目标提供为函数时,您负责创建目录。传递字符串时,multer 将确保为您创建目录。

我不知道作者为什么做出这个决定,但正如你所见,这不是错误。

您可以使用fs 模块来创建目录。

【讨论】:

    【解决方案2】:

    如果有人接受我解决的错误,我也会遇到同样的问题

    var storage = multer.diskStorage({
     destination: function (req, file, cb) {
     cb(null, 'this is not just /uploads do it like /var/www/....') thank you!!
    },
    filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
    }
    })
    var upload = multer({ storage: storage });
    

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 2020-09-17
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2017-04-17
      • 2021-08-23
      相关资源
      最近更新 更多