全面解析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 import css实例代码
Jul 18 Javascript
基于JQUERY的两个ListBox子项互相调整的实现代码
May 07 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
Aug 28 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
Jun 03 Javascript
jQuery多个input求和的实现方法
Feb 12 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
Sep 04 Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 Javascript
Javascript 实现放大镜效果实例详解
Dec 03 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
Apr 23 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
Jul 24 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 cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
js调用flash的效果代码
2008/04/26 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
文本框回车提交与禁止提交示例
2013/09/27 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
python批量获取html内body内容的实例
2019/01/02 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python 链接sqlserver 写接口实例
2020/03/11 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
业务员岗位职责
2015/02/03 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
JS实现简单控制视频播放倍速的实例代码
2021/04/18 Javascript