Nodejs ist ein junges Programmier-Framework voller Vitalität und grenzenloser Leidenschaft und wurde immer schnell aktualisiert. Express, die offizielle Webentwicklungsbibliothek auf Basis von Nodejs, wird ebenfalls gleichzeitig weiterentwickelt, mit einem großen Versions-Upgrade jedes Jahr und sogar größeren Eingriffen auf der untersten Ebene des Frameworks. In Express4 wurde die Middleware-Bibliotheksverbindung durch mehrere detailliertere Bibliotheken ersetzt. Der offensichtliche Vorteil besteht darin, dass diese Middleware freier aktualisiert und veröffentlicht werden kann und nicht vom Express-Release-Zyklus betroffen ist. Das Problem ist jedoch auch sehr schwierig. Sie ist nicht mit früheren Versionen kompatibel und ein Upgrade erfordert eine Änderung des Codes.
Nach einer Zeit der Recherche und Erkundung habe ich herausgefunden, dass es folgende Möglichkeiten gibt, das Hochladen zu erreichen: 1. Express-Middleware-Multer-Modul (dies ist das effizienteste, wird in express3.x nativ unterstützt und wurde in express4.x zu einem unabhängigen Modul). ), 2. Connect-Multiparty-Modul (wird jedoch derzeit nicht offiziell empfohlen), 3. Verwenden Sie das Multiparty-Modul zur Implementierung (diese Methode ist häufiger), 4. Verwenden Sie das beeindruckende Plug-In zur Implementierung (das Plug-In ist einfach und leicht verständlich);
Der einfachste Weg ist das Hochladen über die Middleware „connect-multiparty“.
Installation durch npm install connect-multiparty im Projekt.
Verwendung:
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 });
Nach dem Hochladen generiert die hochgeladene Datei eine temporäre Datei im temporären Verzeichnis. Sie können req.files ausdrucken, um den spezifischen Dateipfad anzuzeigen.
Verschieben Sie einfach die temporäre Datei und benennen Sie sie in das tatsächliche Verzeichnis an der kommentierten Stelle um, um die Upload-Funktion abzuschließen.
Einfach.
Offizielle Adresse: https://www.npmjs.com/package/connect-multiparty
Der Beamte empfiehlt jedoch nicht, diese Middleware zu verwenden. Es wird empfohlen, „Multiparty“ direkt zu verwenden, da die Fehlerbehandlung problematischer ist.
Lassen Sie uns „Multiparty“ verwenden, um eine Version zu implementieren.
1. Verwenden Sie Express (Version 4.11.x), um ein Projekt zu erstellen, und verwenden Sie dabei die Standard-Jade als Vorlagen-Engine.
2. Installieren Sie im Projektverzeichnis die erforderlichen Komponenten über npm install multiparty.
3. Ändern Sie „views/index.jade“ und erstellen Sie ein einfaches Formular für den Datei-Upload wie folgt.
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. Ändern Sie „routes/index.js“, um den Hintergrundcode zum Hochladen von Seiten und Antworten zu implementieren.
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;
Fertig. Damit ist die Einführung in die Datei-Upload-Funktion basierend auf NodeJS Express (4.x) abgeschlossen. Ich hoffe, dass es für alle hilfreich ist, das mit NodeJS Express zusammenhängende Wissen zu erlernen.