全面解析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 相关文章推荐
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
JS应用之禁止抓屏、复制、打印
Feb 21 Javascript
javascript 检测浏览器类型和版本的代码
Sep 15 Javascript
javascript函数式编程程序员的工具集
Oct 11 Javascript
jQuery同步提交示例代码
Dec 12 Javascript
解决前端跨域问题方案汇总
Nov 20 Javascript
JS正则表达式判断有效数实例代码
Mar 13 Javascript
js中的闭包学习心得
Feb 06 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 Javascript
微信小程序实现刷脸登录
May 25 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 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
PHP开发中四种查询返回结果分析
2011/01/02 PHP
PHP中的类型约束介绍
2015/05/11 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
2016/10/13 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python检测远程端口是否打开的方法
2015/03/14 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python操作excel的方法(xlsxwriter包的使用)
2018/06/11 Python
Flask-Mail用法实例分析
2018/07/21 Python
简单谈谈python基本数据类型
2018/09/26 Python
python远程邮件控制电脑升级版
2019/05/23 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
简单介绍django提供的加密算法
2019/12/18 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
面包店的创业计划书范文
2014/01/16 职场文书
机关搬迁方案
2014/05/18 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
师德承诺书
2015/01/20 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
总结Python常用的魔法方法
2021/05/25 Python
图文详解Nginx版本平滑升级方案
2021/09/15 Servers