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

6 javascript multipart node.js express multer

我有使用multer模块的快递节点应用程序 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'));
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

    var upload = multer({
        //storage: mul.storage,
        dest: 'uploads/'
    });
Run Code Online (Sandbox Code Playgroud)

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

Krz*_*pka 7

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

这是在文档(链接):

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

我不知道为什么作者做出了这个决定,但是你看到这不是一个错误.

您可以使用fsmodule来创建目录.