微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js文件上传处理示例

直入主题,在Node.js web 开发基本框架的前提下,我们来做一个文件上传功能

上传的handler比较简单,网上都能找到

rush:js;"> 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 = ''+
''+
'<meta http-equiv="Content-Type" '+
'content="text/html; charset=UTF-8" />'+
''+
''+
'<form action="/fileuploadaction" method="post" enctype="multipart/form-data">'+
''+
''+
''+
''+
''+
'';
response.write(body);
response.end();
}

<span style="color: rgb(255,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:
');
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",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中添加

rush:js;"> handle['/fileuploadform']=handlers.fileuploadform; handle['/fileuploadaction']=handlers.fileuploadaction; handle['/showuploadimage']=handlers.showuploadimage;

有一点需要注意的是,在有需要处理文件上传的时候,不能在server中添加

rush:js;"> request.setEncoding('utf8');//设置这个很可能导致上传失败,这是formidable模块的一个bug吧

rush:js;"> request.addListener("data",function(tempPostData){ postData+=tempPostData; }); request.addListener("end",function(){ route(request,response,postData,handle); });

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

原文地址:https://www.jb51.cc/nodejs/44829.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐