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 相关文章推荐
密码强度检测效果实现原理与代码
Jan 04 Javascript
jQuery中对节点进行操作的相关介绍
Apr 16 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
Aug 03 Javascript
js编写的treeview使用方法
Nov 11 Javascript
JavaScript 日期时间选择器一些小结
Apr 02 Javascript
vue select组件的使用与禁用实现代码
Apr 10 Javascript
vue v-model动态生成详解
Jun 30 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
vue+element UI实现树形表格带复选框的示例代码
Apr 16 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
vue打开其他项目页面并传入数据详解
Nov 25 Vue.js
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 COOKIE设置为浏览器进程
2009/06/21 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP后期静态绑定之self::限制实例分析
2018/12/21 PHP
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
netbeans7安装python插件的方法图解
2013/12/24 Python
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
Python 3中print函数的使用方法总结
2017/08/08 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
解决python打开https出现certificate verify failed的问题
2020/09/03 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
UNIX特点都有哪些
2016/04/05 面试题
法院信息化建设方案
2014/05/21 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
毕业生评语大全
2015/01/04 职场文书
保护校园环境倡议书
2015/04/28 职场文书
工作态度不好检讨书
2015/05/06 职场文书
2015年管理人员工作总结
2015/05/13 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书
500字作文之难忘的同学
2019/12/20 职场文书