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学习笔记之NET模块
Jan 13 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
Sep 29 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
nodejs中方法和模块用法示例
Dec 24 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
php 信息采集程序代码
2009/03/17 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
Vue项目服务器部署之子目录部署方法
2019/05/12 Javascript
python中模块查找的原理与方法详解
2017/08/11 Python
分分钟入门python语言
2018/03/20 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python使用ffmpy将amr格式的音频转化为mp3格式的例子
2019/08/08 Python
python使用html2text库实现从HTML转markdown的方法详解
2020/02/21 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
keras topN显示,自编写代码案例
2020/07/03 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
岗位职责定义及内容
2013/11/08 职场文书
高一生物教学反思
2014/01/17 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
优秀大学生自荐信
2014/06/09 职场文书
公司委托书怎么写
2014/08/02 职场文书
给医院的感谢信
2015/01/21 职场文书
婚宴新娘致辞
2015/07/28 职场文书
校园运动会广播稿
2015/08/19 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
2021/06/09 Python
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技