Heim >Web-Frontend >js-Tutorial >Beispiel für die Verarbeitung des Datei-Uploads von node.js
Um direkt zum Thema zu kommen, werden wir unter der Voraussetzung des Grundgerüsts der Node.js-Webentwicklung eine Datei-Upload-Funktion erstellen
Der Upload-Handler ist relativ einfach und kann online gefunden werden
var url=require('url'); var exec=require('child_process').exec; var querystring=require('querystring'); /********************************文件上传 第3方模块测试*************************/ function fileUploadForm(request,response){ response.writeHead(200,{'Content-Type':'text/html'}); var body = '<html>'+ '<head>'+ '<meta http-equiv="Content-Type" '+ 'content="text/html; charset=UTF-8" />'+ '</head>'+ '<body>'+ '<form action="/fileuploadaction" method="post" enctype="multipart/form-data">'+ '<input name="name" type="text" />'+ '<input name="upload" type="file" />'+ '<input type="submit" value="Upload" />'+ '</form>'+ '</body>'+ '</html>'; response.write(body); response.end(); } <span style="color: rgb(255, 0, 0);">function fileUploadAction(request,response){ var fs=require('fs'); var formidable=require('formidable'); var baseUploadPath="./media/upload/"; var form=new formidable.IncomingForm(); form.uploadDir='./var/tmp'; form.parse(request,function(error,fields,files){ if(!error){ console.log(fields); var desUploadName=baseUploadPath+files.upload.name; fs.renameSync(files.upload.path, desUploadName); response.writeHead(200,{'Content-Type':'text/html'});//值得注意的是这里的response.writeHead()函数内容要写在form.parse()的callback中要不不会显示 response.write('received image:</br>'); response.write('<img src="/showuploadimage?name='+files.upload.name+'" />'); response.end(); } }); }</span> function showUploadImage(request,response){ var fs=require('fs'); var imageName=querystring.parse(url.parse(request.url).query); var baseUploadPath="./media/upload/"; fs.readFile(baseUploadPath+imageName.name, "binary", function(error, file) { if(error) { response.writeHead(500, {"Content-Type": "text/plain"}); response.write(error + "\n"); response.end(); } else { response.writeHead(200, {"Content-Type": "image/png"}); response.write(file, "binary"); response.end(); } }); } exports.fileuploadform=fileUploadForm; exports.fileuploadaction=fileUploadAction; exports.showuploadimage=showUploadImage;
Fügen Sie gleichzeitig
handle['/fileuploadform']=handlers.fileuploadform; handle['/fileuploadaction']=handlers.fileuploadaction; handle['/showuploadimage']=handlers.showuploadimage;
zu index.js hinzu.
Eine Sache, die Sie beachten sollten, ist, dass dies bei Bedarf der Fall ist Wenn Sie Datei-Uploads verarbeiten, können Sie keine Dateien auf den Server hochladen. Ich hoffe, dass dies der Fall ist Es wird für das Lernen aller hilfreich sein und ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.
request.setEncoding('utf8');//设置这个很可能导致上传失败,这是formidable模块的一个bug吧
Weitere Beispiele für die Verarbeitung von node.js-Dateien und verwandte Artikel finden Sie auf der chinesischen PHP-Website!
request.addListener("data",function(tempPostData){ postData+=tempPostData; }); request.addListener("end",function(){ route(request,response,postData,handle); });