Dieses Mal erkläre ich Ihnen ausführlich den Fall der Datei-Upload-Implementierung. Was sind die Vorsichtsmaßnahmen der NodeJS+Express-Implementierung des Datei-Uploads? Schauen wir uns einmal die praktischen Fälle an.
Als ich vor einiger Zeit an einem persönlichen Projekt arbeitete, habe ich den NodeJS-Server zum Hochladen von Dateien verwendet. Jetzt werde ich dies für das Protokoll zusammenfassen.
Wenn ich Dateien hochlade, verwende ich die Multiparty von Express. Natürlich kann dies auch mit der Middleware von connect-multiparty implementiert werden, aber der Beamte scheint die Verwendung von connect-multiparty nicht zu empfehlen Middleware. Schauen wir uns ohne weitere Umschweife den folgenden Code an.
Schritte:
(1) Verwenden Sie Express, um ein Projekt zu erstellen Die Standardeinstellung ist jadetemplate engine, aber Ich bin immer noch an HTML gewöhnt, also habe ich es in eine HTML-Vorlage geändert. (2) Installieren Sie im Projektverzeichnis die erforderlichen Komponenten über npm install multiparty.
(3) Ändern Sie „views/index.html“ und fügen Sie ein Datei-Upload-Formular hinzu.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>上传文件</title> </head> <body> 上传文件 <form method='post', action='/file/uploading', enctype='multipart/form-data'> <input type="file" name="inputFile"> <input type="submit" value="上传"> </form> </body> </html>
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('./views/index'); res.sendfile('./views/index.html'); }); /* 上传 */ router.post('/file/uploading', function(req, res, next) { /* 生成multiparty对象,并配置上传目标路径 */ var form = new multiparty.Form(); /* 设置编辑 */ form.encoding = 'utf-8'; //设置文件存储路劲 form.uploadDir = './public/files'; //设置文件大小限制 form.maxFilesSize = 2 * 1024 * 1024; // form.maxFields = 1000; //设置所有文件的大小总和 //上传后处理 form.parse(req, function(err, fields, files) { var filesTemp = JSON.stringify(files, null, 2); if(err) { console.log('parse error:' + err); }else { console.log('parse files:' + filesTemp); var inputFile = files.inputFile[0]; 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(200, {'content-type': 'text/plain;charset=utf-8'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: filesTemp})) }) }) module.exports = router;
Webpack-Verpackung und Komprimierung von JS- und CSS-Tutorial-Anleitungen
Detaillierte Schritte zur Verwendung des React-Native-Packaging-Plugins- im Swiper
Was sind die Möglichkeiten, Passwörter in NodeJS zu verschlüsseln
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Datei-Upload-Falls mit nodejs+express. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!