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 相关文章推荐
Add a Table to a Word Document
Jun 15 Javascript
jQuery+CSS 实现的超Sexy下拉菜单
Jan 17 Javascript
预加载css或javascript的js代码
Apr 23 Javascript
jQuery 源码分析笔记(7) Queue
Jun 19 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
Apr 02 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
Feb 10 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
Dec 09 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
微信小程序封装的HTTP请求示例【附升级版】
May 11 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
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
Python中常见的数据类型小结
2015/08/29 Python
Python tkinter label 更新方法
2018/10/11 Python
更新修改后的Python模块方法
2019/03/03 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Boutique 1美国:阿联酋奢侈时尚零售商
2017/10/16 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
西班牙最大的在线滑板和街头服饰商店:Fillow.net
2019/04/15 全球购物
大学生应聘自荐信
2013/10/11 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
数据库之SQL技巧整理案例
2021/07/07 SQL Server
JavaScript执行机制详细介绍
2021/12/06 Javascript