我正在使用带有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并只保留了存储,我也得到了同样的错误......
答案 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 });