node.js文件上传处理示例


Posted in Javascript onOctober 27, 2016

直入主题,在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="/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;

同时在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); 
  });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js事件监听机制(事件捕获)总结
Aug 08 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
深入理解JavaScript中的箭头函数
Jul 28 Javascript
AngularJS ng-bind-template 指令详解
Jul 30 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
AngularJS实现Input格式化的方法
Nov 07 Javascript
基于Vue如何封装分页组件
Dec 16 Javascript
详解在Vue中通过自定义指令获取dom元素
Mar 04 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
vue 如何添加全局函数或全局变量以及单页面的title设置总结
Jun 01 Javascript
薪资那么高的Web前端必看书单
Oct 13 Javascript
AJAX在JQuery中的应用详解
Jan 30 jQuery
Vue.js表单控件实践
Oct 27 #Javascript
vue实现可增删查改的成绩单
Oct 27 #Javascript
vuex实现简易计数器
Oct 27 #Javascript
微信小程序  生命周期详解
Oct 27 #Javascript
require.js+vue开发微信上传图片组件
Oct 27 #Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
Oct 27 #Javascript
vue开发心得和技巧分享
Oct 27 #Javascript
You might like
为何说PHP引用是个坑,要慎用
2018/04/02 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
Node.js中child_process实现多进程
2015/02/03 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
Python如何获取文件路径/目录
2020/09/22 Python
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
网络技术专业求职信
2014/02/18 职场文书
合伙经营协议书
2014/04/18 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
2014年团支书工作总结
2014/11/14 职场文书
2015年毕业实习工作总结
2015/05/29 职场文书
初三英语教学反思
2016/02/15 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
详解Python内置模块Collections
2022/03/22 Python