Heim > Fragen und Antworten > Hauptteil
Ich verwende das Express-Framework und versuche, Multer-Middleware zum Hochladen zu verwenden. Es stellt sich heraus, dass der einfachste Upload
var upload = multer({ dest: 'uploads/' }) ist, aber ich habe festgestellt, dass dies bei keiner der hochgeladenen Dateien der Fall ist Dort ist eine 16-stellige zufällige Zeichenfolge mit Suffixnamen, daher habe ich „multer.diskStorage“ verwendet, um weitere Operationen an der Datei durchzuführen:
`var express = require('express') ;
var router = express.Router();
var multer = require('multer');
//Legen Sie den Speicherpfad fest
//var upload = multer({ dest: 'uploads/' })
/ GET-Homepage /
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads');
},
filename: function (req, file, cb) {
cb(null, file.fieldname+"-"+Date.now());
}
});
var upload = multer({ storage: storage });
router.post('/upload', upload.single('image')), function(req, res, next){
var image=req.file.path;
res.send('index', { title : 'Express' ,image:image});
}
module.exports = router;
`
Ich denke, dies sollte die einfachste Demo sein, aber es wird nur ein 500-Fehler gemeldet. Der Fehler lautet wie folgt:
POST /upload 500 16.841 ms - 1278
Error: Failed to lookup view "error" in views directory "D:\wx_bandu\views"
at EventEmitter.render (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\application.js:580:17)
at ServerResponse.render (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\response.js:971:7)
at D:\wx_bandu\app.js:45:7
at Layer.handle_error (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\layer.js:71:5)
at trim_prefix (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\index.js:315:13)
at D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\index.js:284:7
at Function.process_params (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\index.js:335:12)
at next (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\index.js:275:10)
at Layer.handle_error (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\layer.js:67:12)
at trim_prefix (D:\wx_bandu\node_modules\._express@4.15.3@express\lib\router\index.js:315:13)
Ich habe viele Informationen im Internet und auch auf Github gelesen, aber ich habe das Gefühl, dass ich den Grund einfach nicht finden kann. Bitte geben Sie mir eine Anleitung
我想大声告诉你2017-07-06 10:36:13
500是服务器错误,app.js第45行错了,res.send('index', { title : 'Express' ,image:image});
,你准备把文件传到浏览器?
習慣沉默2017-07-06 10:36:13
搞了半天,本身默认的error.jade展示不出来,因为我用了pug模板,后来改过来了,错误一目了然,destination设置的路径是从硬盘根目录开始的,比如我写的是/uploads,那储存的路径就是D://uploads,因为没有这个文件夹,所以它一直报错,只要把它修改一下就好了