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):处理上传图片
Dec 18 NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
nodejs实现聊天机器人功能
Sep 19 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 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
PHP4之COOKIE支持详解
2006/10/09 PHP
Excel数据导入Mysql数据库的实现代码
2008/06/05 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
PHP PDO数据库操作预处理与注意事项
2019/03/16 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
VUE 全局变量的几种实现方式
2018/08/22 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
python中函数默认值使用注意点详解
2016/06/01 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
解决python线程卡死的问题
2019/02/18 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
知识竞赛主持词
2014/03/26 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
教师自查自纠材料
2014/10/14 职场文书
地球一小时活动总结
2015/02/27 职场文书
反邪教观后感
2015/06/11 职场文书
公司考勤管理制度
2015/08/04 职场文书
我的中国梦主题班会
2015/08/14 职场文书
初中语文教学随笔
2015/08/15 职场文书
详解MySQL的Seconds_Behind_Master
2021/05/18 MySQL
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
python如何将mat文件转为png
2022/07/15 Python