运行应用程序时使用multer会导致错误

时间:2016-02-08 13:43:51

标签: javascript node.js express multipart multer

我正在使用带有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 \上传\ 1454935327214.zip'   
出现错误(原生)

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

如果我在根手动下创建上传文件夹,这是有效的......

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

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

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

2 个答案:

答案 0 :(得分:7)

  

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

这是在文档(link)中:

  

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

我不知道作者为何做出这个决定,但你发现这不是一个错误。

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

答案 1 :(得分:0)

如果有人接受我解决的错误

,我遇到了同样的问题
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 });