全面解析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 DOM学习第六章 表单实例
Feb 19 Javascript
获取表单控件原始(初始)值的方法
Aug 21 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
Mar 03 Javascript
javascript基本包装类型介绍
Apr 10 Javascript
AngularJS入门教程之AngularJS指令
Apr 18 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
Javascript中的async awai的用法
May 17 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
Jun 28 jQuery
vue动态路由配置及路由传参的方式
May 23 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
微信小程序动态添加和删除组件的现实
Feb 28 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网上商城购物车设计代码分享
2012/02/15 PHP
yii的CURD操作实例详解
2014/12/04 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
jquery remove方法应用详解
2012/11/22 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
JavaScript中几种排序算法的简单实现
2015/07/29 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python http接口自动化脚本详解
2018/01/02 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
举例讲解Python常用模块
2019/03/08 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Python流程控制 if else实现解析
2019/09/02 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
Speedo速比涛法国官方网站:泳衣、泳镜、泳帽、泳裤
2019/07/30 全球购物
在校生自我鉴定
2014/01/23 职场文书
环境工程专业自荐信
2014/03/03 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
员工拾金不昧表扬稿
2015/05/05 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
vue-element-admin项目导入和导出的实现
2021/05/21 Vue.js
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
SQLServer之常用函数总结详解
2021/08/30 SQL Server
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL