全面解析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 相关文章推荐
js右键菜单效果代码
Jul 21 Javascript
css样式标签和js语法属性区别
Nov 06 Javascript
一个css与js结合的下拉菜单支持主流浏览器
Oct 08 Javascript
Js与Jq 获取页面元素值的方法和差异对比
Apr 30 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
javascript表单事件处理方法详解
May 15 Javascript
浅谈在koa2中实现页面渲染的全局数据
Oct 09 Javascript
浅谈在Vue.js中如何实现时间转换指令
Jan 06 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
vue实现购物车加减
May 30 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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
杏林同学录(五)
2006/10/09 PHP
ThinkPHP实现更新数据实例详解(demo)
2016/06/29 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python读写unicode文件的方法
2015/07/10 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python如何基于redis实现ip代理池
2020/01/17 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
简述DNS进行域名解析的过程
2013/12/02 面试题
心理学专业毕业生推荐信范文
2013/11/21 职场文书
如何写好升职自荐信
2014/01/06 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
使用pytorch实现线性回归
2021/04/11 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python