博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js文件上传处理
阅读量:2429 次
发布时间:2019-05-10

本文共 2439 字,大约阅读时间需要 8 分钟。

在我之前讲到的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 = ''+        ''+        '
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ '
'+ ''+ ''; response.write(body); response.end();}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:
'); response.write(''); response.end(); } });}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;
同时在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);        });

转载地址:http://jysmb.baihongyu.com/

你可能感兴趣的文章
方刚先生谈《胜于言传——网站内容制胜宝典》
查看>>
华为、BAT力捧!程序员:我彻底慌了...
查看>>
刷爆了!BAT这场AI芯片之战,你更支持谁?
查看>>
定了!刚面完AI岗位,这些题全都考了!程序员:有黑幕!
查看>>
自学 Python后,自己一个人可以通过此技能挣什么钱?
查看>>
Java三种面试者是面试官最讨厌的,见之即毙!
查看>>
当程序员要具备什么条件?
查看>>
手拿3份AI的offer?这些人凭什么这么刚?
查看>>
给大家推荐一本Python书,京东断货王,火遍IT圈!
查看>>
Web 全栈全端技术体系与软件四层结构-CSDN公开课-专题视频课程
查看>>
AI学习挑战直播课:成功案例分享及行业趋势分析-CSDN公开课-专题视频课程
查看>>
RabbitMQ(1): docker-compose安装rabbitmq及简单使用Hello World
查看>>
J2EE的体系架构——J2EE
查看>>
198. 打家劫舍 DP
查看>>
628. 三个数的最大乘积
查看>>
正向代理和反向代理
查看>>
不同的类加载器加载的类不是同一个类
查看>>
怎么让笔记本变路由器,亲身试验可用,不用下第三方软件
查看>>
DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016 解决方案
查看>>
java.util.ConcurrentModificationException
查看>>