使用nodejs+express(4.x+)实现文件上传
来源:互联网 发布:淘宝的免费开店是什么 编辑:程序博客网 时间:2024/05/16 11:48
最简单的做法是通过“connect-multiparty”中间件实现上传。
通过在项目中npm install connect-multiparty进行安装。
用法:
var multipart = require('connect-multiparty');var multipartMiddleware = multipart();app.post('/upload', multipartMiddleware, function(req, resp) { console.log(req.body, req.files); // don't forget to delete all req.files when done });
上传后,上传的文件会在临时目录中生成一个临时文件,具体可将req.files打印出查看具体文件路径。
只要在注释的地方将临时文件移动并重命名到实际目录中即可完成上传功能。
简单。
官方地址:https://www.npmjs.com/package/connect-multiparty
但是官方不建议使用该中间件,建议直接使用“multiparty”,因为错误处理比较麻烦。
下面就用“multiparty”实现一个版本。
1.使用express(版本是4.11.x)创建一个项目,采用默认的jade作为模版引擎。
2.在项目目录中,通过npm install multiparty进行安装必要组件。
3.修改views/index.jade,如下做一个简单的用于文件上传的form。
1 extends layout 2 3 block content 4 form(method='post', action='/file/uploading', enctype='multipart/form-data') 5 input(name='inputFile', type='file', multiple='mutiple') 6 input(name='btnUp', type='submit',value='上传')
4.修改routes/index.js,实现上传页面和上传响应的后台代码。
1 var express = require('express'); 2 var router = express.Router(); 3 var multiparty = require('multiparty'); 4 var util = require('util'); 5 var fs = require('fs'); 6 7 /* 上传页面 */ 8 router.get('/', function(req, res, next) { 9 res.render('index', { title: 'Express' }); 10 }); 11 12 /* 上传*/ 13 router.post('/file/uploading', function(req, res, next){ 14 //生成multiparty对象,并配置上传目标路径 15 var form = new multiparty.Form({uploadDir: './public/files/'}); 16 //上传完成后处理 17 form.parse(req, function(err, fields, files) { 18 var filesTmp = JSON.stringify(files,null,2); 19 20 if(err){ 21 console.log('parse error: ' + err); 22 } else { 23 console.log('parse files: ' + filesTmp); 24 var inputFile = files.inputFile[0]; 25 var uploadedPath = inputFile.path; 26 var dstPath = './public/files/' + inputFile.originalFilename; 27 //重命名为真实文件名 28 fs.rename(uploadedPath, dstPath, function(err) { 29 if(err){ 30 console.log('rename error: ' + err); 31 } else { 32 console.log('rename ok'); 33 } 34 }); 35 } 36 37 res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'}); 38 res.write('received upload:\n\n'); 39 res.end(util.inspect({fields: fields, files: filesTmp})); 40 }); 41 }); 42 43 module.exports = router;
完成。
“multiparty”的用法详见:
www.npmjs.com/package/multiparty
github.com/andrewrk/node-multiparty
0 0
- 使用nodejs+express(4.x+)实现文件上传
- 使用nodejs+express(4.x+)实现文件上传
- nodejs+express实现文件上传
- nodejs express+ejs+formidable实现文件上传
- NodeJS express+multer实现文件上传
- nodeJS中express+busboy实现文件上传
- nodejs express 上传文件
- nodejs:express 4.x
- express 4.X 使用multer中间件 上传文件
- nodejs express 文件上传处理
- Express使用Multer实现文件上传
- nodejs express 4.0+的文件上传
- nodejs + Express 用 dropzone.js 上传文件
- Nodejs express、html5实现拖拽上传
- nodejs实现文件上传
- 基于NodeJs的Express及Webuploader实现大文件分片上传与合并(一)
- NodeJs的express模块4.X
- Nodejs Express 4.X 中文API
- MongoDB数据文件内部结构
- Tomcat修改IP访问为绑定域名访问
- c指针-01
- Android 深入理解Android中的自定义属性
- Spring 定时任务之 @Scheduled cron表达式
- 使用nodejs+express(4.x+)实现文件上传
- Android Bluetooth Low Energy官方文档翻译
- 剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)
- CreateThread和_beginthreadex区别
- 树、森林和二叉树的转换
- mac xcode7编译老版本程序程序出错
- IONIC----01.ionicActionSheet
- android static Handler
- jquery遍历节点 children(),next(),prev(),siblings()closest()