全面解析node 表单的图片上传


Posted in Javascript onNovember 21, 2016

node 全面解析表单的图片上传 ,multiparty解析与内容类型的HTTP请求multipart/form-data,也被称为文件上传。

multiparty安装

npm install multiparty

html代码

<form action="/api/uppic" method="post" >
<input type="file" name="pic" >
<input type="submit">
</form>

node 代码

app.route('/api/uppic').post(function(req,res){
var multiparty = require('multiparty'); 
var form = new multiparty.Form();//新建表单
//设置编辑
form.encoding = 'utf-8';
//设置图片存储路径
form.uploadDir = "Uploads/gaoxiao/";
form.keepExtensions = true; //保留后缀
form.maxFieldsSize = 2*1024*1024; //内存大小
form.maxFilesSize= 5*1024*1024;//文件字节大小限制,超出会报错err
//表单解析
form.parse(req, function(err,fields,files) {
//报错处理
if(err){
console.log(err);
var u={"error" :1,"message":'请上传5M以图片'};
res.end(JSON.stringify(u));
return false;
}
//获取路径
var oldpath=files.imgFile[0]['path'];
//文件后缀处理格式
if(oldpath.indexOf('.jpg')>=0){
var suffix='.jpg'; 
}else if(oldpath.indexOf('.png')>=0){ 
var suffix='.png'; 
}else if(oldpath.indexOf('.gif')>=0){ 
var suffix='.gif'; 
}else{
var u={"error" :1,"message":'请上传正确格式'};
res.end(JSON.stringify(u));
return false;
}
var url='Uploads/gaoxiao/'+Date.now()+suffix;
var fs=require('fs');
//给图片修改名称
fs.renameSync(oldpath,url);
var u={ "error" : 0, "url" : '/'+url}
res.end(JSON.stringify(u)); 
});
});

multiparty

multiparty.Form创建一个新的形式**

encoding:用于输入表单字段集编码。默认为utf8

maxFieldsSize:限制内存的所有字段(而不是文件)的量可以以字节为单位分配。如果超过该值,一个error事件被发射。默认大小为2MB。

maxFields:限制,将发射一个前解析字段的数目error的事件。一个文件算作在这种情况下,一个字段。默认为1000。

maxFilesSize:上传文件大小限制,只有当相关autoFiles的true。限制接受合并所有文件的总字节数。如果超过该值,一个error事件被发射。默认值是无穷大。

autoFields:启用field事件和禁用part事件的字段。这是自动设置为true如果添加了一个field侦听器。

uploadDir:只有当相关autoFiles的true。目录放置文件上传。您以后可以使用移动它们fs.rename()。默认为os.tmpDir()。

form.parse(req,function(err,fields,files){})

- fields: 是一个对象(上传名称和值),其属性名的字段名称和值是字段值的数组。

- files :是一个对象(上传名称和服务器文件路径),其属性名的字段名称和值是文件对象的数组。

files内文件对象file - 具有这些属性的对象:

- fieldName-同name-此文件中的字段名

- originalFilename -文件名,对于该文件的用户的报告

- path - 在磁盘上载文件的绝对路径

- headers - 这是与该文件一起发送的HTTP头

- size -以字节的文件大小

node表单解析(multiparty)的api地址:https://www.npmjs.com/package/multiparty

以上所述是小编给大家介绍的全面解析node 表单的图片上传,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
javascript学习笔记(一) 在html中使用javascript
Jun 18 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
May 20 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
详谈Node.js之操作文件系统
Aug 29 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
Vue 的双向绑定原理与用法揭秘
May 06 Javascript
javascript实现扫雷简易版
Aug 18 Javascript
vue中的可拖拽宽度div的实现示例
Apr 08 Vue.js
利用fecha进行JS日期处理
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 #Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 #Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 #Javascript
js学习之----深入理解闭包
Nov 21 #Javascript
浅谈js原生拖放
Nov 21 #Javascript
weUI应用之JS常用信息提示弹层的封装
Nov 21 #Javascript
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
JS定时器实例
2013/04/17 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[52:06]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python文件及目录操作实例详解
2015/06/04 Python
django站点管理详解
2017/12/12 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python集合操作方法详解
2020/02/09 Python
浅析Python中字符串的intern机制
2020/10/03 Python
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
捷克玩具商店:Bambule
2019/02/23 全球购物
Pharmacy Online中文直邮网站:澳洲大型药房
2020/06/27 全球购物
易程科技软件测试笔试
2013/03/24 面试题
女方回门宴答谢词
2014/01/14 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
源码安装apache脚本部署过程详解
2022/09/23 Servers