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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 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
php 动态执行带有参数的类方法
2009/04/10 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
JS 分号引起的一段调试问题
2009/06/18 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
2013/04/09 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
浅谈scrapy 的基本命令介绍
2017/06/13 Python
Python KMeans聚类问题分析
2018/02/23 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
pytorch进行上采样的种类实例
2020/02/18 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
如何解决python多种版本冲突问题
2020/10/13 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
法人委托书范本
2014/04/04 职场文书
好学生评语大全
2014/05/05 职场文书
2014市国税局对照检查材料思想汇报
2014/09/23 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
七个Python必备的GUI库
2021/04/27 Python
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers