Node.js + express实现上传大文件的方法分析【图片、文本文件】


Posted in Javascript onMarch 14, 2019

本文实例讲述了Node.js + express实现上传大文件的方法。分享给大家供大家参考,具体如下:

对于大文件的上传我们首先要引入一个叫做 multer 的库:

npm install --save multer

关于这个库,大家可以查阅官方文档:

点击跳转 https://www.npmjs.com/package/multer

我们先将库引入我们的项目中:

var multer = require('multer')
var upload = multer({ dest: 'uploads/' })// 文件会上传到这个目录

具体的 get 方法:

app.post('/upload', upload.single('logo'), function(req, res){//发送 json 数据到这个路由
  console.dir(req.file);
  res.send(req.p);
})

由于上传文件要用到表当,所以我们这里先建立一个名为 form 表单:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
  <form action="/upload" method="post" enctype="multipart/form-data">
    <h2>单图上传</h2>
    <input type="file" name="logo">
    <input type="submit" value="提交">
  </form>
<body>
</body>
</html>

然后我们在 server 中引入该表单:

var fs = require('fs')
// /from 的 html 界面,用于演示上传文件
app.get('/form',function(req, res){
  var form = fs.readFileSync('./form.html',{ encoding : "utf8"});
  res.send(form);
})

由 localhost:3000/form 运行后上传文件,就能在你项目的upload目录下可看到:

Node.js + express实现上传大文件的方法分析【图片、文本文件】

Node.js + express实现上传大文件的方法分析【图片、文本文件】

虽然上传成功,但w我n看到文件名是混乱的,而且路径也是固定:

修改路径和文件名:

// 更改大文件的存储路径
var createFolder = function(folder){
  try{
    fs.accessSync(folder);
  }catch( e ){
    fs.mkdirSync(folder);
  }
};
var uploadFolder = './upload/';// 设定存储文件夹为当前目录下的 /upload 文件夹
createFolder(uploadFolder);
// 磁盘存贮
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, uploadFolder );// 他会放在当前目录下的 /upload 文件夹下(没有该文件夹,就新建一个)
  },
  filename: function (req, file, cb) {// 在这里设定文件名
    cb(null, file.originalname );
  }
})
var upload = multer({ storage: storage })

效果:

Node.js + express实现上传大文件的方法分析【图片、文本文件】

最后,这里是视屏连接方便大家学习:

https://www.bilibili.com/video/av24385038/?p=6

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
Javascript string 扩展库代码
Apr 09 Javascript
juqery 学习之四 筛选查找
Nov 30 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
May 25 Javascript
vue中将网页打印成pdf实例代码
Jun 15 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
Jan 20 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
微信小程序实现左右列表联动
May 19 Javascript
javascript使用链接跨域下载图片
Nov 01 Javascript
基于vue和websocket的多人在线聊天室
Feb 01 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 #Javascript
Node.js + express基本用法教程
Mar 14 #Javascript
Vue渲染过程浅析
Mar 14 #Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 #Javascript
详解使用React制作一个模态框
Mar 14 #Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 #Javascript
详解js动态获取浏览器或页面等容器的宽高
Mar 13 #Javascript
You might like
php定时计划任务的实现方法详解
2013/06/06 PHP
thinkPHP5.0框架引入Traits功能实例分析
2017/03/18 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
2016/03/29 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
Vue中正确使用jQuery的方法
2017/10/30 jQuery
Angular封装搜索框组件操作示例
2019/04/25 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
python使用urllib2提交http post请求的方法
2015/05/26 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
详解python中的 is 操作符
2017/12/26 Python
python表格存取的方法
2018/03/07 Python
python监控进程脚本
2018/04/12 Python
Python退火算法在高次方程的应用
2018/07/26 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Python json格式化打印实现过程解析
2020/07/21 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
总经理助理的八要求
2013/11/12 职场文书
《陋室铭》教学反思
2014/02/26 职场文书
幼儿园家长寄语
2014/04/02 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
员工保密承诺书
2014/05/28 职场文书
幼儿园个人总结
2015/02/28 职场文书
大学生暑假实习总结
2015/07/13 职场文书
运输公司工作总结
2015/08/11 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python