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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
NodeJS学习笔记之Http模块
Jan 13 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
浅谈NodeJs之数据库异常处理
Oct 25 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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实现的替换敏感字符串类实例
2014/09/22 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
2016/05/16 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
PHP7变量处理机制修改
2021/03/09 PHP
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
jquery处理json对象
2014/11/03 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
2016/03/13 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
2019/10/11 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
使用django的objects.filter()方法匹配多个关键字的方法
2019/07/18 Python
python实现猜数字游戏
2020/03/25 Python
pandas数据处理进阶详解
2019/10/11 Python
Python Lambda函数使用总结详解
2019/12/11 Python
python 实现汉诺塔游戏
2020/11/28 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
营销人才自我鉴定范文
2013/12/25 职场文书
复核员上岗演讲稿
2014/01/05 职场文书
战友聚会邀请函
2014/01/18 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
学生安全责任书模板
2014/07/25 职场文书
2014年财务部工作总结
2014/11/11 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android