全面解析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 相关文章推荐
来自chinaz的ajax获取评论代码
May 03 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
Nov 09 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
高性能JavaScript DOM编程(1)
Aug 11 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
Express使用html模板的详细代码
Sep 18 Javascript
jquery实现动态添加附件功能
Oct 23 jQuery
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
javascript实现京东登录显示隐藏密码
Aug 02 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关联数组的10个操作技巧
2013/01/21 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JS 修改URL参数(实现代码)
2013/07/08 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
js实现表格筛选功能
2017/01/18 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
python搭建虚拟环境的步骤详解
2016/09/27 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
Python守护进程实现过程详解
2020/02/10 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
N:Philanthropy官网:美国洛杉矶基础款服装
2020/06/09 全球购物
教师推荐信范文
2013/11/24 职场文书
销售会计工作职责
2013/12/02 职场文书
客服主管岗位职责
2013/12/13 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
学校运动会霸气口号
2014/06/07 职场文书
房屋出租委托书格式
2014/09/23 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
Java方法重载和方法重写的区别到底在哪?
2021/06/11 Java/Android
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技