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中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 Javascript
js的flv视频播放器插件使用方法
Jun 23 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
vue路由守卫+登录态管理实例分析
May 21 Javascript
实现高性能javascript的注意事项
May 27 Javascript
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
Sep 10 jQuery
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
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
innerText和textContent对比及使用介绍
2013/02/27 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
2014/10/20 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
2015/01/24 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
JQuery Ajax WebService传递参数的简单实例
2016/11/02 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
Vue.directive()的用法和实例详解
2018/03/04 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
Python多图片合并PDF的方法
2019/01/03 Python
python ubplot使用方法解析
2020/01/10 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
校园报刊亭创业计划书
2014/01/02 职场文书
支部书记四风对照材料
2014/08/28 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2014年物业管理工作总结
2014/11/21 职场文书
优秀班集体申报材料
2014/12/25 职场文书
个人培训总结
2015/03/05 职场文书
获奖感言范文
2015/07/31 职场文书
Golang数据类型和相互转换
2022/04/12 Golang
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技