全面解析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 相关文章推荐
JavaScript 字符串与数组转换函数[不用split与join]
Dec 13 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
跟我学习javascript的定时器
Nov 19 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
深入理解Vue transition源码分析
Jul 30 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
微信小程序实现文字跑马灯
May 26 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
JavaScript原型式继承实现方法
Nov 06 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
Dec 25 Javascript
JS代码简洁方式之函数方法详解
Jul 28 Javascript
vue设置全局访问接口API地址操作
Aug 14 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_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
javascript中caller和callee详解
2015/08/10 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
jQuery实现验证码功能
2017/03/17 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
js绑定事件和解绑事件
2017/04/27 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
Three.js基础学习之场景对象
2017/09/27 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python的gevent框架的入门教程
2015/04/29 Python
python事件驱动event实现详解
2018/11/21 Python
Python属性和内建属性实例解析
2020/01/14 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
关于观后感的作文
2015/06/18 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript