nodejs基于express实现文件上传的方法

 更新时间:2018年03月19日 14:45:31   作者:星曦  
这篇文章主要介绍了nodejs基于express实现文件上传的方法,结合实例形式分析了nodejs基于express框架实现文件上传功能的具体步骤与相关操作技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • node.js中的buffer.length方法使用说明

    node.js中的buffer.length方法使用说明

    这篇文章主要介绍了node.js中的buffer.length方法使用说明,本文介绍了buffer.length的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • nodejs微信开发之自动回复的实现

    nodejs微信开发之自动回复的实现

    这篇文章主要介绍了nodejs微信开发之自动回复的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • node.js 微信开发之定时获取access_token

    node.js 微信开发之定时获取access_token

    本文给大家分享的是在使用node.js做微信开发的过程中如何定时获取access_token的方法,有需要的小伙伴可以参考下
    2020-02-02
  • Node.js数据库操作之连接MySQL数据库(一)

    Node.js数据库操作之连接MySQL数据库(一)

    前一阵在做项目的时候,需要通过nodejs连接到MySQL数据库,于是简单地学习了一下MySQL这个库,分享一些学习心得给大家,希望对大家有帮助。下面这篇文章主要介绍了Node.js数据库操作之连接MySQL数据库的相关资料,需要的朋友可以参考下。
    2017-03-03
  • nodejs multer实现文件上传与下载

    nodejs multer实现文件上传与下载

    这篇文章主要为大家详细介绍了nodejs multer实现文件上传与下载的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • node thread.sleep实现示例

    node thread.sleep实现示例

    这篇文章主要介绍了node thread.sleep实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 基于游标的分页接口实现代码示例

    基于游标的分页接口实现代码示例

    这篇文章主要给大家介绍了关于基于游标的分页接口实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Node.js Buffer模块功能及常用方法实例分析

    Node.js Buffer模块功能及常用方法实例分析

    这篇文章主要介绍了Node.js Buffer模块功能及常用方法,结合实例形式分析了Buffer模块的各种常用函数及相关使用技巧,需要的朋友可以参考下
    2019-01-01
  • node.js中的fs.mkdir方法使用说明

    node.js中的fs.mkdir方法使用说明

    这篇文章主要介绍了node.js中的fs.mkdir方法使用说明,本文介绍了fs.mkdir方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • express.js中间件说明详解

    express.js中间件说明详解

    这篇文章主要介绍了express.js中间件说明详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论