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服务器(10):处理POST请求
Dec 18 NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Nodejs获取网络数据并生成Excel表格
Mar 31 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
详解Nodejs之npm&amp;package.json
Jun 15 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
nodejs实现的http、https 请求封装操作示例
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
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
javascript实现二级级联菜单的简单制作
2015/11/19 Javascript
js判断当前页面在移动设备还是在PC端中打开
2016/01/06 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
浅谈vue 单文件探索
2018/09/05 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
H5 js点击按钮复制文本到粘贴板
2020/11/19 Javascript
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
对pandas中apply函数的用法详解
2018/04/10 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python新手学习raise用法
2020/06/03 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python操作toml文件的示例代码
2020/11/27 Python
有机童装:Toby Tiger
2018/05/23 全球购物
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
司法所长先进事迹
2014/06/02 职场文书
个人四风问题整改措施
2014/10/24 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
Python几种酷炫的进度条的方式
2022/04/11 Python
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle