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 相关文章推荐
删除重复数据的算法
Nov 23 Javascript
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
javascript中this做事件参数相关问题解答
Mar 17 Javascript
JavaScript数组常用操作技巧汇总
Nov 17 Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 Javascript
JavaScript的事件机制详解
Jan 17 Javascript
详解使用Node.js 将txt文件转为Excel文件
Jul 05 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
js实现右键弹出自定义菜单
Sep 08 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
如何用vue实现网页截图你知道吗
Nov 17 Vue.js
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 彩色文字实现代码
2009/06/29 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
非常实用的php验证码类
2016/05/15 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
javascript 页面只自动刷新一次
2009/07/10 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
2015/12/04 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
使用vue编写一个点击数字计时小游戏
2016/08/31 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
Python获取单个程序CPU使用情况趋势图
2015/03/10 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
客服部工作职责范本
2014/02/14 职场文书
烹饪自我鉴定
2014/03/01 职场文书
2014年协会工作总结
2014/11/22 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
公司宣传语大全
2015/07/13 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
2016年第十九届推普周活动总结
2016/04/06 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP
MySQL实现配置主从复制项目实践
2022/03/31 MySQL