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 不只是脚本
May 30 Javascript
jquery 表单下所有元素的隐藏
Jul 25 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
JQuery标签页效果实例详解
Dec 24 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
原生javascript 学习之js变量全面了解
Jul 14 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
VUEJS 2.0 子组件访问/调用父组件的实例
Feb 10 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
Vue render函数实战之实现tabs选项卡组件
Apr 22 Javascript
基于Electron实现桌面应用开发代码实例
Jul 07 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
Jul 23 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 strtotime 函数UNIX时间戳
2009/01/14 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
php去除数组中重复数据
2014/11/18 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
python中class的定义及使用教程
2019/09/18 Python
python实现的汉诺塔算法示例
2019/10/23 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
费用会计岗位职责
2014/01/01 职场文书
会议邀请函范文
2014/01/09 职场文书
领班岗位职责范文
2014/02/06 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2015小学师德工作总结
2015/07/21 职场文书
安全生产标语口号
2015/12/26 职场文书
python实现简单区块链结构
2021/04/25 Python
python自动化之如何利用allure生成测试报告
2021/05/02 Python
vue+spring boot实现校验码功能
2021/05/27 Vue.js