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 相关文章推荐
jQuery html()等方法介绍
Nov 18 Javascript
js实现网页自动刷新可制作节日倒计时效果
May 27 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
May 28 Javascript
javascript求日期差的方法
Mar 02 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
微信小程序实现多宫格抽奖活动
Apr 15 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
基于Vue中使用节流Lodash throttle详解
Oct 30 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
Jul 20 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
总结对比php中的多种序列化
2016/08/28 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
javascript数组去掉重复
2011/05/12 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
python二叉树的实现实例
2013/11/21 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python实现五子棋游戏
2019/06/18 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
个人职业生涯规划书1500字
2013/12/31 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
刑事法律意见书
2015/06/04 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
运动会新闻稿
2015/07/17 职场文书
2016入党积极分子心得体会
2016/01/06 职场文书
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
草系十大最强宝可梦,纸片人上榜,榜首大家最熟悉
2022/03/18 日漫