流程如下:
1、先引入el-upload
2、调用上传前事件
3、上传前事件中将file文件转formData
4、调用后端oss接口上传文件
5、上传完成后回显数据
6、点击图片/视频预览


图片和视频的上传(文件上传通用)

<el-upload class="upload-demo" action="" :file-list="fileList"  :before-upload="beforeAvatarUpload"><el-button icon="el-icon-upload" size="small" type="primary">上传</el-button>
</el-upload>

beforeAvatarUpload为文件上传前的操作,该方法中会携带一个参数filefile就是当前上传的文件,我们需要用new FormData()转为file文件格式,调用后端接口上传图片。

beforeAvatarUpload(file) {let formData = new FormData();formData.append('file',file)// 调用oss后端接口ossUpload(formData).then(el=>{// 上传成功后的回调:el,该参数内的url就是http的访问地址,将该方法存储到回显的数据中this.upload(el.data)}).catch(err=>{console.log(err)})},
 upload(val) {// 此处可以校验上传的格式,如果视频格式不是mp4则会提示if(val.fileSuffix != ".mp4"){return this.$message.error('视频格式不正确')}// console.log(11111,val,val.fileSuffix)this.dataList.push({fiParentId: this.parentId,fvEstateType: this.info.fvEstateType,fiTaskType: this.info.fiTaskType,fvUrl: val.url,fiType: "",fvName: "",fvRemark: "",fiSort: 0,id: 0})
}

图片的上传也是一样的,此时图片上传和视频上传的一般流程就结束了,页面列表中遍历dataList即可回显数据。

关于图片点击放大回显

点击列表图片,通过作用域插槽将图片的url地址保存到dialogImageUrl中,在弹框中即可回显。

<!-- 图片 -->
<el-dialog :visible.sync="dialogVisible" width="80%" top="1%"><img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>

视频的回显方式相同

<el-dialog :visible.sync="dialogVisible" width="80%" top="1%"><video:src="dialogVideoUrl"controlsautoPlaypreload="auto"width="100%"height="1000px"></video>
</el-dialog>

在这里需要注意的是,这种方法只适用于单张图片或小视频文件的上传,大文件并不适合,大文件的上传需要考虑数据切片,以及断点续传。

在这里提一下数据切片的思路,我们上传文件时会有一个文件大小,比如一个文件有1MB大小,我们一次只上传600kb,那么切片的文件大小就是600kb,在上传的时候将计算文件大小 1MB / 600kb 向上取整 = 2,切片数量就是2,在通过循环切片上传,每次上传一个切片,当所有切片上传完时,任务结束。


下面提一下断点续传:

实现断点续传(断点下载)

实现断点续传(断点下载)可以提高文件下载的效率和稳定性,特别对于大文件或不稳定的网络环境更为重要。以下是前端实现断点续传的一般步骤:1、支持服务器端:首先,确保服务器端支持断点续传。服务器应当能够处理带有Range和Content-Range头部的请求,并能够正确返回指定区间的数据。2、计算上次下载进度:在前端,需要记录上次下载的进度,以便在断点续传时从上次断开的地方继续下载。可以使用localStorage或sessionStorage来存储上次下载的进度。3、发起下载请求:在前端,通过创建一个XMLHttpRequest对象或使用fetchAPI来发起下载请求。同时,设置Range头部,指定下载的起始位置。4、接收响应:当服务器响应下载请求时,获取响应的状态码和响应头部信息。如果状态码为 206(Partial Content),表示服务器支持断点续传,并且返回了指定区间的数据。如果没有响应206状态码,则需要重新从头开始下载。5、保存已下载的数据:在接收到响应后,将返回的数据保存下来。可以使用Blob或ArrayBuffer对象来保存二进制数据。6、更新下载进度:在接收到每个数据块后,更新下载进度。可以通过计算已下载的数据大小和总文件大小的比例来表示下载进度,并将其显示在用户界面上。7、保存断点信息:在每次下载进度更新时,同时将已下载的数据大小和总文件大小保存到本地存储中,以便下次继续下载时使用。8、处理下载完成:当下载完成时,根据需要进行相应的操作,例如保存文件、提示用户下载完成等。9、处理下载错误:在下载过程中可能会发生网络错误或其他问题,需要通过错误处理机制来处理这些情况。可以监听XMLHttpRequest对象的onerror事件或使用catch方法捕捉fetchAPI的错误,并根据需要进行相应的处理和重试操作。断点续传原文链接:https://blog.csdn.net/weixin_55846296/article/details/131455411

element tree组件连接线以及懒加载 (

图片和视频的上传(文件上传通用)相关推荐

  1. Extjs 扩展Htmleditor,支持 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能...

    去年对Extjs的富文本框编辑器htmleditor做过扩展,扩展成图片上传和文件上传功能,感觉功能还是不够,原文如下: http://hi.baidu.com/jackvoilet/blog/ite ...

  2. Extjs 扩展Htmleditor,支持 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能

    最近在做项目的时候感觉还是不完美,于是在此基础上又进行了扩展,目前CJ_StarHtmlEditor支持: 图片上传 文件上传 插入flash 插入多媒体 插入层 插入横线等功能,基本上能够满足要求了 ...

  3. Java图片上传/文件上传

    图片上传/文件上传 1. 创建一个web项目 新建一个JSP <%@ page language="java" import="java.util.*" ...

  4. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  5. Android头像(图片)上传/文件上传

    1.前言 作为初学者来说,想必对上传的数据格式肯定比较模糊,一般传递参数给后台,常用的是使用基本数据类型拼装成json格式.头像上传也可以使用String类型进行上传(极客学院有相关的视频,可以自行了 ...

  6. “图片”--上传(文件上传一致,单文件)

    html代码: <form action="GoodsAction_modify.do" method="post" enctype="mult ...

  7. 弹性服务器怎么上传文件,上传哪个文件夹弹性云服务器

    上传哪个文件夹弹性云服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 本节 ...

  8. 文档上传到服务器上,将文件上传到服务器上

    将文件上传到服务器上 内容精选 换一换 为了实现NAT Server.SAP HANA主备节点和SAP S/4HANA主备节点互相通过SSH协议跳转的功能,需要配置云服务器之间的互信.在本地PC上,生 ...

  9. 电脑文件如何传到云服务器上,电脑文件如何传到云服务器上

    电脑文件如何传到云服务器上 内容精选 换一换 DNS服务器用于解析弹性文件服务中文件系统的域名.DNS服务器东北区IP地址为100.125.6.250,其它区域详情请参见华为云内网DNS地址.默认情况 ...

  10. 上传文件和上传文件的后缀名限制

    为什么80%的码农都做不了架构师?>>>    上传文件: 引用自:https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_ ...

最新文章

  1. 详解MariaDB数据库的存储过程
  2. 智能车竞赛技术报告 | 智能车视觉 - 石家庄学院 - 百事
  3. 台式电脑一般价钱多少_让你少走弯路,看我怎么花低价钱配出高配置的台式电脑的...
  4. maven+springmvc+dubbo+zookeeper
  5. CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb
  6. cocos2d-x游戏实例(21)-纵版射击游戏(8)
  7. SQL注入(SQL Injection)
  8. 【QGIS入门实战精品教程】2.1:初识QGIS软件
  9. 点击显示底框颜色,默认显示第一个。
  10. servlet中的数据存储
  11. 四行代码创建复杂(无限级)树
  12. easyUi load方法重新加载表单的数据
  13. c 与java性能测试_JNI只C性能测试
  14. logging日志输出模块
  15. 回顾18年我的Java自动化测试框架
  16. 基于vue3.0全家桶H5模板
  17. 一直以来伴随我的一些学习习惯(part1)
  18. Apache Flink 零基础入门(四):客户端操作的 5 种模式
  19. error: system libzip must be upgraded to version #62= 0.11【问题解决】php7编译zip报错
  20. 大数据高级开发工程师——大数据相关工具之一 Sqoop

热门文章

  1. VLOOKUP函数将一个excel表格的数据匹配到另一个表中
  2. 横河EJA210E-JHS5J-910DN-EH23B2WE03-B变送器
  3. 锤子桌面中运用的搜索算法 - PinyinSearch(T9Search+QwertySearch)
  4. AD(DA)芯片PCF8591使用介绍
  5. STM32自己写printf
  6. 河南理工大学计算机学院杨合超,模式识别的主要方法及其应用
  7. wiringPi库API大全
  8. 【Unity3D】缩放、平移、旋转场景
  9. 【已解决】X79主板E5-2660CPU装Win10关机变重启的问题.
  10. 如何安装和使用Ubuntu的新Web应用功能