【发布时间】:2018-02-04 03:06:02
【问题描述】:
我正在使用 Multer 制作上传文件系统。我按照 Github 页面的说明进行操作,但它不起作用。
const express= require('express');
const app = express();
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now());
}
});
const upload = multer({ storage: storage });
app.post('/editPhoto',upload.single('avatar'),function(req,res,next){
upload(req,res,function(err){
if(err){
res.json({success:false,message:err});
}
else{
res.json({success:true,message:"Photo was updated !"});
}
});
});
我收到TypeError: upload is not a function
我做错了什么?
编辑
我按照你说的和医生说的做了。
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads');
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now());
}
});
app.post('/editPhoto',function(req,res,next){
var upload = multer({ storage:storage}).single('userPhoto');
upload(req,res,function(err){
console.log(req.file);
if(err){
res.json({success:false,message:err});
}
else{
res.json({success:true,message:"Photo was updated !"});
}
});
});
req.file 未定义
当我这样尝试时
var upload = multer({ storage:storage});
app.post('/editPhoto',function(req,res,next){
upload(req,res,function(err){
console.log(req.file);
if(err){
res.json({success:false,message:err});
}
else{
res.json({success:true,message:"Photo was updated !"});
}
});
});
上传不是函数
【问题讨论】:
-
请正确阅读 multer 文档npmjs.com/package/multer,您应该使用
upload.single('avatar')或upload(req,res,function(err){。upload.single('avatar')已经在目的地上传了您的文件,现在您可以使用req.file在您的路线内访问此文件。 -
请看编辑