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中操作mysql数据库示例
Dec 20 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
使用Nodejs连接mongodb数据库的实现代码
Aug 21 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
Feb 02 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs脚本centos开机启动实操方法
Mar 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
php 全文搜索和替换的实现代码
2008/07/29 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
简单实现php上传文件功能
2017/09/21 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
vue2.0+webpack环境的构造过程
2016/11/08 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
详解js的视频和音频采集
2018/08/09 Javascript
Vue项目结合Vue-layer实现弹框式编辑功能(实例代码)
2020/03/11 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
解决vue打包 npm run build-test突然不动了的问题
2020/11/13 Javascript
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
详解Django框架中的视图级缓存
2015/07/23 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
python可迭代对象去重实例
2020/05/15 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
2014年公司庆元旦活动方案
2014/03/05 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
行政申诉状范文
2015/05/20 职场文书
Python编程编写完善的命令行工具
2021/09/15 Python
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript