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 相关文章推荐
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
Nodejs express框架一个工程中同时使用ejs模版和jade模版
Dec 28 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
详解使用nodeJs安装Vue-cli
May 17 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
NVM安装nodejs的方法实用步骤
Jan 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原理之Session Gc的一个小概率Notice
2011/04/12 PHP
php流量统计功能的实现代码
2012/09/29 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
bootstrap响应式表格实例详解
2017/05/15 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
iview form清除校验状态的实现
2019/09/19 Javascript
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
档案管理员岗位职责
2013/12/01 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
服务承诺书格式
2014/05/21 职场文书
大学英语专业求职信
2014/06/21 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
天坛导游词
2015/02/02 职场文书
开场白怎么写
2015/06/01 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
2019各种承诺书范文
2019/06/24 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript