node.js文件上传处理
来源:互联网 发布:斯皮尔伯格 人工智能 编辑:程序博客网 时间:2024/04/30 04:45
在我之前讲到的node.js web 开发基本框架的前提下(http://blog.csdn.net/clh604/article/details/8488739),我们来做一个文件上传功能
上传的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();}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(); } });}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); });
- node.js文件上传处理
- node.js 文件上传
- node.js文件图片上传
- node.js中上传文件
- Node.js处理excel文件
- 0015、node 之multer上传文件处理
- node.js connect 实现文件上传
- node.js express框架文件上传路径
- 【代码】Node.js模拟浏览器文件上传
- 利用node.js android 实现文件上传
- node.js利用express实现文件上传
- Node.js模拟浏览器文件上传
- Node.js上传文件和遍历目录
- node.js上传并解析Excel文件
- Node.js作为服务器的文件上传
- Node.js做登录&上传文件
- node.js + busboy 多文件上传
- node.js上传并解析Excel文件
- liunx下安装配置Samba服务器
- Android 4.0中按键的处理流程
- 认识Linux系统服务(鸟哥18章笔记)
- Linux下安装配置NFS服务器
- 只有行动,才能解除你所有的不安。
- node.js文件上传处理
- Ubuntu 12.04重装手记
- Ubuntu上NFS的安装配置(问题解决版)
- Ubuntu tips
- Ubuntu下用apt-get 与aptitude管理软件包(全)
- shell学习笔记
- Linux Shell编程基础(全)
- Linux Shell编程实例
- Ubuntu Linux系统下Apt-get命令参数详解