Nodejs est un jeune framework de programmation, plein de vitalité et de passion illimitée, et qui a toujours été mis à jour rapidement. Express, la bibliothèque officielle de développement Web basée sur Nodejs, se développe également simultanément, avec une mise à niveau majeure de la version chaque année et même une intervention chirurgicale majeure sur la couche inférieure du framework. Dans Express4, la connexion à la bibliothèque middleware a été remplacée par plusieurs bibliothèques plus fines. L'avantage évident est que ces middlewares peuvent être mis à jour et publiés plus librement et ne seront pas affectés par le cycle de publication Express ; mais le problème est également très difficile. Ils ne sont pas compatibles avec les versions précédentes et la mise à niveau nécessite une modification du code.
Après une période de recherche et d'exploration, j'ai découvert que les moyens de réaliser le téléchargement sont : 1. le module multer middleware express (c'est le plus efficace, pris en charge nativement dans express3.x, et est devenu un module indépendant dans express4.x ), 2. le module connect-multiparty (mais ce n'est pas officiellement recommandé maintenant), 3. Utilisez le module multiparty pour implémenter (cette méthode est plus courante), 4. Utilisez le formidable plug-in pour implémenter (le plug-in est simple et facile à comprendre)
Le moyen le plus simple est de télécharger via le middleware "connect-multiparty".
Installer par npm install connect-multiparty dans le projet.
Utilisation :
var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); app.post('/upload', multipartMiddleware, function(req, resp) { console.log(req.body, req.files); // don't forget to delete all req.files when done });
Après le téléchargement, le fichier téléchargé générera un fichier temporaire dans le répertoire temporaire. Vous pouvez imprimer req.files pour afficher le chemin spécifique du fichier.
Déplacez et renommez simplement le fichier temporaire dans le répertoire réel à l'endroit commenté pour terminer la fonction de téléchargement.
Simple.
Adresse officielle : https://www.npmjs.com/package/connect-multiparty
Cependant, le responsable ne recommande pas d'utiliser ce middleware. Il est recommandé d'utiliser directement "multiparty" car la gestion des erreurs est plus gênante.
Utilisons « multiparty » pour implémenter une version.
1. Utilisez express (version 4.11.x) pour créer un projet, en utilisant le jade par défaut comme moteur de modèle.
2. Dans le répertoire du projet, installez les composants nécessaires via npm install multiparty.
3. Modifiez vues/index.jade et créez un formulaire simple pour le téléchargement de fichiers comme suit.
extends layout block content form(method='post', action='/file/uploading', enctype='multipart/form-data') input(name='inputFile', type='file', multiple='mutiple') input(name='btnUp', type='submit',value='上传')
4. Modifiez routes/index.js pour implémenter le code d'arrière-plan pour le téléchargement des pages et le téléchargement des réponses.
var express = require('express'); var router = express.Router(); var multiparty = require('multiparty'); var util = require('util'); var fs = require('fs'); /* 上传页面 */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); /* 上传*/ router.post('/file/uploading', function(req, res, next){ //生成multiparty对象,并配置上传目标路径 var form = new multiparty.Form({uploadDir: './public/files/'}); //上传完成后处理 form.parse(req, function(err, fields, files) { var filesTmp = JSON.stringify(files,null,); if(err){ console.log('parse error: ' + err); } else { console.log('parse files: ' + filesTmp); var inputFile = files.inputFile[]; var uploadedPath = inputFile.path; var dstPath = './public/files/' + inputFile.originalFilename; //重命名为真实文件名 fs.rename(uploadedPath, dstPath, function(err) { if(err){ console.log('rename error: ' + err); } else { console.log('rename ok'); } }); } res.writeHead(, {'content-type': 'text/plain;charset=utf-'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: filesTmp})); }); }); module.exports = router;
Fait. Ceci termine l'introduction à la fonction de téléchargement de fichiers basée sur nodejs express (4.x). J'espère qu'il sera utile à tout le monde d'apprendre les connaissances liées à nodejs express.