我对nodejs / express还是很陌生,但是无论我做什么,似乎都无法将multer保存到指定的目的地,这似乎完全忽略了该参数。代码如下所示
//app.js
var multer = require('multer');
var fs = require('fs');
var apiRouter = express.Router();
var app = express();
var store = multer.diskStorage({
filename: function(req,file,cb){
console.log("filename");
cb(null, Date.now()+'.'+file.originalname);
},
desitnation: function(req,file,cb){
console.log("storage");
cb(null,'./public/');
}
});
var upload = multer({storage:store}).single('file');
apiRouter.post('/upload', function(req, res){
upload(req, res, function (err) {
if (err) {
return res.end(err.toString());
}
console.log(req.file);
return res.json({originalname:req.file.originalname, uploadname:req.file.filename});
});
});
我在上传时收到的回复如下所示:
GET /vendor.js.map 200 3.916 ms - 6636755
filename
{ fieldname: 'file',
originalname: 'Desert.jpg',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'C:\\Users\\Dwyer\\AppData\\Local\\Temp',
filename: '1538979138829.Desert.jpg',
path:
'C:\\Users\\Dwyer\\AppData\\Local\\Temp\\1538979138829.Desert.jpg',
size: 845941 }
POST /api/upload 200 70.031 ms - 69
似乎正确设置了文件,但是我不确定从何处获取目标,我能理解为什么不读取目标参数的原因。
答案 0 :(得分:2)
它实际上是“目的地”(不是目的地)。您还应该确保在指定的目的地有一个具有指定名称的文件夹。
答案 1 :(得分:0)
您是否尝试在目的地使用物理地址?我猜multer document中的目的地是linux操作系统中的物理地址。
答案 2 :(得分:0)
但是,无论我做什么,似乎都无法将multer保存到指定的目的地,这似乎完全忽略了该参数。
这是因为配置中似乎有错字。
'use strict';
var store = multer.diskStorage({
filename: function (req, file, cb) {
console.log("filename");
cb(null, Date.now() + '.' + file.originalname);
},
destination: function (req, file, cb) { // it is destination not desitnation :)
console.log("storage");
cb(null, './public/');
}
});