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入门详解(多篇文章结合)
Mar 07 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
nodejs文件夹深层复制功能
Sep 03 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
通过实例了解Nodejs模块系统及require机制
Jul 16 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读取远程gzip压缩网页的方法
2014/12/29 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
Js组件的一些写法
2010/09/10 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
python文本数据相似度的度量
2018/03/12 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
财务方面个人工作的自我评价
2013/12/28 职场文书
春节活动策划方案
2014/01/24 职场文书
工程进度款催款函
2015/06/24 职场文书
导游词之上海豫园
2019/10/24 职场文书
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫