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 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 Javascript
干货!教大家如何选择Vue和React
Mar 13 Javascript
angular.js实现购物车功能
Oct 23 Javascript
详解webpack4升级指南以及从webpack3.x迁移
Jun 12 Javascript
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
vue backtop组件的实现完整代码
Apr 07 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_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
js实现图片实时时钟
2020/01/15 Javascript
js实现时间日期校验
2020/05/26 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
python机器学习之神经网络(三)
2017/12/20 Python
pycharm远程linux开发和调试代码的方法
2018/07/17 Python
python实现贪吃蛇游戏
2020/03/21 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
2020/04/24 Python
使用Keras中的ImageDataGenerator进行批次读图方式
2020/06/17 Python
Python map及filter函数使用方法解析
2020/08/06 Python
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
在校生自我鉴定
2014/01/23 职场文书
期终自我鉴定
2014/02/17 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
python批量创建变量并赋值操作
2021/06/03 Python