全面解析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入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
邮箱下拉自动填充选择示例代码附图
Apr 03 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
jQuery实现右下角可缩放大小的层完整实例
Jun 20 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
深入浅出理解JavaScript闭包的功能与用法
Aug 01 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
Vue CLI2升级至Vue CLI3的方法步骤
May 20 Javascript
Node.js 在本地生成日志文件的方法
Feb 07 Javascript
Javascript异步执行不按顺序解决方案
Apr 30 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获取汉字的拼音(全部与首字母)
2013/06/27 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
php写的AES加密解密类分享
2014/06/20 PHP
PHP中文乱码解决方案
2015/03/05 PHP
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
Javascript中return的使用与闭包详解
2017/01/11 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python网络编程详解
2017/10/31 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
如何在Python对Excel进行读取
2020/06/04 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
2020/08/03 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
Python timeit模块原理及使用方法
2020/10/10 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
集团公司人力资源部岗位职责
2014/01/03 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
美丽人生观后感
2015/06/03 职场文书
Java实现多线程聊天室
2021/06/26 Java/Android