全面解析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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
javascript 类定义的4种方法
Sep 12 Javascript
Javascript Objects详解
Sep 04 Javascript
浅谈Javascript的静态属性和原型属性
May 07 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
JavaScript函数的调用以及参数传递
Oct 21 Javascript
详解JavaScript的内置对象
Dec 07 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
javascript实现贪吃蛇经典游戏
Apr 10 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 Javascript
Vue watch响应数据实现方法解析
Jul 10 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 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字符串分割函数explode的实例代码
2013/02/07 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
Jquery 扩展方法
2010/05/06 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
浅析用prototype定义自己的方法
2013/11/14 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
详解如何较好的使用js
2016/12/16 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
Python中super函数的用法
2017/11/17 Python
python机器学习库scikit-learn:SVR的基本应用
2019/06/26 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
django+echart数据动态显示的例子
2019/08/12 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
如何在python中判断变量的类型
2020/07/29 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
六十岁生日答谢词
2014/01/10 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
吴仁宝观后感
2015/06/09 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
Java异常体系非正常停止和分类
2022/06/14 Java/Android