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 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs中的异步编程知识点详解
Jan 17 NodeJs
在nodejs中创建child process的方法
Jan 26 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php格式化时间戳
2016/12/17 PHP
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
js实现图片拖动改变顺序附图
2014/05/13 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
微信小程序自定义toast实现方法详解【附demo源码下载】
2017/11/28 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
jquery实现简单自动轮播图效果
2020/07/29 jQuery
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中使用mysql数据库详细介绍
2015/03/27 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
Python socket模块方法实现详解
2019/11/05 Python
基于python检查矩阵计算结果
2020/05/21 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
python 通过exifread读取照片信息
2020/12/24 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
施工协议书范本
2014/04/22 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
Python中的xlrd模块使用整理
2021/06/15 Python