Maison > Questions et réponses > le corps du texte
J'utilise le framework express et j'essaie d'utiliser le middleware multer pour le téléchargement. Il s'avère que le téléchargement le plus basique est
var upload = multer({ dest: 'uploads/' }), mais j'ai trouvé qu'aucun des fichiers téléchargés ne l'était. là. Une chaîne aléatoire de 16 chiffres de nom de suffixe. Mon exigence est de normaliser le nom du fichier, j'ai donc utilisé multer.diskStorage pour effectuer plus d'opérations sur le fichier :
`var express = require('express') ;
var router = express.Router();
var multer = require('multer');
//Définissez le chemin de sauvegarde
//var upload = multer({ dest: 'uploads/' })
/ GET page d'accueil /
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
var stockage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, '/uploads');
},
filename: function (req, file, cb) {
cb(null, file.fieldname+"-"+Date.now());
}
});
var upload = multer({ stockage : stockage });
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;
`
Je pense que cela devrait être la démo la plus basique, mais elle signale simplement une erreur 500. L'erreur est la suivante :
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)
J'ai lu beaucoup d'informations sur Internet et également sur github, mais j'ai l'impression de ne pas trouver la raison. Veuillez me donner quelques conseils
.我想大声告诉你2017-07-06 10:36:13
500 est une erreur de serveur, la ligne 45 de app.js est fausse, res.send('index', { title : 'Express' ,image:image});
, vas-tu transférer le fichier vers le navigateur ?
習慣沉默2017-07-06 10:36:13
Après avoir travaillé dessus pendant longtemps, le fichier error.jade par défaut ne peut pas être affiché car j'ai utilisé le modèle pug et je l'ai modifié plus tard. L'erreur est claire en un coup d'œil. Le chemin défini par la destination commence à partir du répertoire racine du. disque dur. Par exemple, j'ai écrit /uploads, le chemin de stockage est D://uploads. Comme il n'existe pas de dossier de ce type, il continue de signaler des erreurs. Il suffit de le modifier et tout ira bien.