nodejs基于express实现文件上传的方法


Posted in NodeJs onMarch 19, 2018

本文实例讲述了nodejs基于express实现文件上传的方法。分享给大家供大家参考,具体如下:

前段时间在做个人项目的时候,用到了nodejs服务端上传文件,现在回头把这个小结一下,作为记录。

本人上传文件时是基于express的multiparty ,当然也可以使用connect-multiparty中间件实现,但官方似乎不推荐使用connect-multiparty中间件。废话不多说,下面看代码吧。

步骤:

(1)使用express创建项目,默认使用的是jade模板引擎,但是还是习惯于html,所以就改为html模板。
(2)在项目目录中,通过npm install multiparty进行安装必要组件。
(3)修改views/index.html,添加一个文件上传的form。

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>上传文件</title>
</head>
<body>
  上传文件
  <form method='post', action='/file/uploading', enctype='multipart/form-data'>
    <input type="file" name="inputFile">
    <input type="submit" value="上传">
  </form>
</body>
</html>

(4)修改routes/index.js,实现上传页面和上传响应的后台代码。

var express = require('express');
var router = express.Router();
var multiparty = require('multiparty');
var util = require('util');
var fs = require('fs');
/* 上传页面. */
router.get('/', function(req, res, next) {
 //res.render('./views/index');
 res.sendfile('./views/index.html');
});
/* 上传 */
router.post('/file/uploading', function(req, res, next) {
  /* 生成multiparty对象,并配置上传目标路径 */
  var form = new multiparty.Form();
  /* 设置编辑 */
  form.encoding = 'utf-8';
  //设置文件存储路劲
  form.uploadDir = './public/files';
  //设置文件大小限制
  form.maxFilesSize = 2 * 1024 * 1024;
  // form.maxFields = 1000;  //设置所有文件的大小总和
  //上传后处理
  form.parse(req, function(err, fields, files) {
    var filesTemp = JSON.stringify(files, null, 2);
    if(err) {
      console.log('parse error:' + err);
    }else {
      console.log('parse files:' + filesTemp);
      var inputFile = files.inputFile[0];
      var uploadedPath = inputFile.path;
      var dstPath = './public/files' + inputFile.originalFilename;
      //重命名为真实文件名
      fs.rename(uploadedPath, dstPath, function(err) {
        if(err) {
          console.log('rename error:' + err);
        }else {
          console.log('rename ok');
        }
      })
    }
    res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
    res.write('received upload:\n\n');
    res.end(util.inspect({fields: fields, files: filesTemp}))
  })
})
module.exports = router;

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
NodeJS url验证(url-valid)的使用方法
Nov 18 NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
轻松创建nodejs服务器(9):实现非阻塞操作
Dec 18 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
nodejs中sleep功能实现暂停几秒的方法
Jul 12 NodeJs
nodejs acl的用户权限管理详解
Mar 14 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 #NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 #NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 #NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 #NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 #NodeJs
nodejs简单访问及操作mysql数据库的方法示例
Mar 15 #NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 #NodeJs
You might like
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
ThinkPHP使用smarty模板引擎的方法
2014/07/01 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
如何使用bootstrap框架 bootstrap入门必看!
2017/04/13 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
node前端模板引擎Jade之标签的基本写法
2018/05/11 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
python中管道用法入门实例
2015/06/04 Python
python交互式图形编程实例(二)
2017/11/17 Python
Python处理文本换行符实例代码
2018/02/03 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python使用ctypes调用扩展模块的实例方法
2020/01/28 Python
婚前协议书标准版
2014/10/19 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
员工手册编写范本
2015/05/14 职场文书
走近毛泽东观后感
2015/06/04 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
Golang二维数组的使用方式
2021/05/28 Golang