利用中间件Multer实现上传功能
2016-04-14 19:29
429 查看
Multer中间件实现对multipart/form-data格式的数据的操作
现在实现上传图片的功能,上传文件完成后,背景图片显示上传的图片
首先在html文件中添加文件上传标签
创建upload.js文件,定义ajax上传文件的方法。这里运用了XHR2的FormData对象。FormData对象可以发送二进制文件,并且可以在没有表单的情况下模拟表单的提交
upload.js文件中的内容如下
利用上传文件的中间件Multer对上传的图像进行处理。首先创建Multer对象,并通过storage对对象进行设置,将其保存在multerUtil文件中
引入multer模块,处理ajax的请求,返回上传后的文件信息,将其保存在test.js文件夹下
在路由文件中添加路由,ajax请求发出后触发该路由。
至此,文件上传功能实现
参考文献:express文件上传中间件Multer最新使用说明
nodejs处理图片文件上传
现在实现上传图片的功能,上传文件完成后,背景图片显示上传的图片
首先在html文件中添加文件上传标签
<input type="file" id="file" name="files" />
创建upload.js文件,定义ajax上传文件的方法。这里运用了XHR2的FormData对象。FormData对象可以发送二进制文件,并且可以在没有表单的情况下模拟表单的提交
upload.js文件中的内容如下
var filenode = document.getElementById("file"); filenode.onchange=function(){ var xhr=new XMLHttpRequest(); //设置回调,当请求的状态发生变化时,就会被调用 xhr.onreadystatechange = function () { //等待上传结果,将背景图像设置为tx2.jpg if (xhr.readyState == 1) { filenode.parentNode.style.backgroundImage = "url('/images/tx2.jpg')"; } //上传成功,返回的文件名,设置到父节点的背景中 if (xhr.readyState == 4 && xhr.status == 200) { var path=JSON.parse(xhr.responseText).path.split("\\"); filenode.parentNode.style.backgroundImage = "url('./uploads/" +path[path.length-1]+ "')"; } } //构造form数据 var data= new FormData(); data.append("files", filenode.files[0]); //设置请求,true:表示异步 xhr.open("post", "/upload1", true); //不要缓存 //xhr.setRequestHeader("If-Modified-Since", "0"); //提交请求 xhr.send(data); //清除掉,否则下一次选择同样的文件就进入不到onchange函数中了 filenode.value = null; }
利用上传文件的中间件Multer对上传的图像进行处理。首先创建Multer对象,并通过storage对对象进行设置,将其保存在multerUtil文件中
var multer=require('multer'); var storage = multer.diskStorage({ //设置上传后文件路径,uploads文件夹会自动创建。 destination: function (req, file, cb) { cb(null, './public/uploads') }, //给上传文件重命名,获取添加后缀名 filename: function (req, file, cb) { var fileFormat = (file.originalname).split("."); cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]); } }); //添加配置文件到multer对象。 var upload = multer({ storage: storage }); //如需其他设置,请参考multer的limits,使用方法如下。 //var upload = multer({ // storage: storage, // limits:{} // }); //导出对象 module.exports = upload;
引入multer模块,处理ajax的请求,返回上传后的文件信息,将其保存在test.js文件夹下
var muilter = require('./multerUtil'); //multer有single()中的名称必须是表单上传字段的name名称。 var upload=muilter.single('files'); exports.dataInput = function (req, res) { upload(req, res, function (err) { //添加错误处理 if (err) { return console.log(err); } //文件信息在req.file或者req.files中显示。 res.send(req.file); }); }
在路由文件中添加路由,ajax请求发出后触发该路由。
var testController=require("../model/test"); module.exports = function(app) { app.post('/upload1',testController.dataInput); }
至此,文件上传功能实现
参考文献:express文件上传中间件Multer最新使用说明
nodejs处理图片文件上传
相关文章推荐
- Listview中嵌套ImageView,ImageView高度自适应时,显示不占满布局有空白,解决方案
- Android 5.0 Notification的改变
- struts1 action 之间的跳转
- 最长公共子序列
- 细说exports和module.exports
- UIScrollView基本用法和代理方法
- 0414-复利计算再升级
- css sprite 图片整合处理技术(精灵技术)
- 【补充】deferred.then()的理解
- 链表分割
- Linux下安装Oracle,Tuxedo出错
- Spring MVC 文件上传的MaxUploadSizeExceededException异常处理
- 配置eclipse内存
- C#实现优先队列 基于二叉堆 附使用案例
- eclipse 打jar包并混淆
- MAC下的pycharm 设置显示行号
- 复利计算- 结对2.0--复利计算WEB升级版
- redis 数据类型详解 以及 redis适用场景场合
- C++ string类的实现
- int、long、long long取值范围