全面解析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 相关文章推荐
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
JavaScript使用Prototype实现面向对象的方法
Apr 14 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
Jul 26 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
May 25 Javascript
微信小程序 登录的简单实现
Apr 19 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
javaScript实现复选框全选反选事件详解
Nov 20 Javascript
Dropify.js图片宽高自适应的方法
Nov 27 Javascript
layui数据表格跨行自动合并的例子
Sep 02 Javascript
利用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
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
PHP连接MySQL的2种方法小结以及防止乱码
2014/03/11 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
zend框架实现支持sql server的操作方法
2016/12/08 PHP
菜单效果
2006/10/14 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
JS中的算法与数据结构之二叉查找树(Binary Sort Tree)实例详解
2019/08/16 Javascript
python里大整数相乘相关技巧指南
2014/09/12 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
python代码区分大小写吗
2020/06/17 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
咖啡馆创业计划书
2014/01/26 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
小学德育工作总结2015
2015/05/12 职场文书
青年教师听课心得体会
2016/01/15 职场文书
Java线程的6种状态与生命周期
2022/05/11 Java/Android