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 相关文章推荐
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
nodejs个人博客开发第六步 数据分页
Apr 12 NodeJs
深入学习nodejs中的async模块的使用方法
Jul 12 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
Feb 06 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
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
2020/04/10 Javascript
Python中list初始化方法示例
2016/09/18 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
学生周末回家住宿长期请假条
2014/02/15 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
银行委托书范本
2014/09/28 职场文书
初中优秀学生评语
2014/12/29 职场文书
公司租车协议书
2015/01/29 职场文书
2015年校务公开工作总结
2015/05/26 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
nginx实现动静分离的方法示例
2021/11/07 Servers