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 !"});
}
});
});
アップロードは機能ではありません
@Aabidがコメントで述べたように、マルチミドルウェアとコントローラーへのアップロードの両方を使用する必要はありません。
次を使用できます。
app.post('/editPhoto', upload.single('avatar'), (req, res, next) => {
// here in the req.file you will have the uploaded avatar file
})
または、次を使用できます。
app.post('/editPhoto', (req, res, next) => {
upload(req, res, function (err) {
if (err) {
// This is a good practice when you want to handle your errors differently
return
}
// Everything went fine
})
})
したがって、両方を同時に使用するのではなく、2つの方法のいずれかを使用します。