全面解析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 相关文章推荐
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
Feb 26 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
vue.js内置组件之keep-alive组件使用
Jul 10 Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 Javascript
小程序云开发获取不到数据库记录的解决方法
May 18 Javascript
JavaScript在web自动化测试中的作用示例详解
Aug 25 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 Javascript
Vue接口封装的完整步骤记录
May 14 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更改目录及子目录下所有的文件后缀的代码
2010/09/24 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
javascript基本语法分析说明
2008/06/15 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
pandas 选择某几列的方法
2018/07/03 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
pyecharts动态轨迹图的实现示例
2020/04/17 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
施工材料员岗位职责
2014/02/12 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
手机银行营销方案
2014/03/14 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
竞选村长演讲稿
2014/04/28 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
vue整合百度地图显示指定地点信息
2022/04/06 Vue.js