node.js文件上传处理示例
(编辑:jimmy 日期: 2024/11/19 浏览:3 次 )
直入主题,在Node.js web 开发基本框架的前提下,我们来做一个文件上传功能
上传的handler比较简单,网上都能找到
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="/UploadFiles/2021-04-02/showuploadimage">同时在index.js中添加
handle['/fileuploadform']=handlers.fileuploadform; handle['/fileuploadaction']=handlers.fileuploadaction; handle['/showuploadimage']=handlers.showuploadimage;有一点需要注意的是,在有需要处理文件上传的时候,不能在server中添加
request.setEncoding('utf8');//设置这个很可能导致上传失败,这是formidable模块的一个bug吧和
request.addListener("data",function(tempPostData){ postData+=tempPostData; }); request.addListener("end",function(){ route(request,response,postData,handle); });以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇:Vue.js表单控件实践