首页 > 编程知识 正文

html自动播放视频代码,html5视频文件元素

时间:2023-05-03 18:42:54 阅读:138768 作者:3481

核心原理:

这个项目的核心是文件的块上传。 前后高度合作,双方需要约定一些数据,完成大文件的屏蔽。 我们在项目中必须重点解决以下问题。

如何平铺;

合成文件的方法

*中断了从哪个瓷砖开始。

如何划分,利用强大的js库,减轻我们的工作。 市场上已经有关于大文件块的轮子了。 虽然程序员的本能迫使我重塑车轮。 但是由于时间的关系和工作的关系,我不得不放弃。 最后,我们选择了百度的WebUploader来实现前端的需求。

怎么配,在配之前,我们还得解决另一个问题。 我们怎么区分街区所属的那份文件? ssdmn,我在前端采用了生成唯一uuid的标志来创建文件,并为每个分片带来了请求。 但是,后来做秒传的时候,我放弃了,采用Md5维持了块和文件的关系。

在服务器端合并文件并记录阻塞问题,业内已经提供了很好的解决方案。 参照迅雷可知,每次下载过程中,都有两个文件:文件主体和文件临时文件,临时文件中存储着与各信息块对应的字节位的状态。

所有这些都必须前后端密切联系。 前端必须根据固定大小对文件进行切片。 此外,在请求中携带切片编号和大小。 前端发送请求顺利到达后台后,服务器只需计算请求数据中给出的每个片号和片大小的起始位置,并与读取的文件碎片数据一起写入文件。

为了便于开发,将服务器端的业务逻辑分为初始化、块处理、文件上传完成等。

服务器端的业务逻辑模块如下

功能分析:

文件夹生成模块

文件夹上传完成后,服务器扫描的代码如下

块上传、块处理逻辑应该是最简单的逻辑。 up6已经将文件分块,对各块数据进行识别。 这些识别符包括文件块的索引、尺寸、偏移、文件MD5、文件块MD5 (需要打开)等信息,其能够在接收到这些信息后非常方便地处理。 例如,在分布式存储系统中保存块数据

块的上传可以说是我们整个项目的基础。 断点的重新发布、暂停等都需要使用阻止。

把这个分开比较简单。 前端采用webuploader,分块等基础功能已经打包,使用方便。

利用webUpload提供的文件API,前端看起来非常简单。

前台HTML模板

明白了就一定能对上。 我对大文件进行了切片,但是切片后原始文件没有功能,所以我会将切片合并到原始文件中。 只需将平铺对齐原始位置并写入文件即可。 正如前面的原理部分已经说过的那样,我们知道块大小和块号码,所以可以知道该块在文件中的位置。 所以在这里使用RandomAccessFile是明智的,RandomAccessFile可以在文件中前后移动。 但是,andomAccessFile中的大多数功能已被JDK1.4中NIO的“内存映射文件”(memory-mapped files )所替换。 我在这个项目中分别写了用RandomAccessFile和MappedByteBuffer合成文件。 分别对应的方法有uploadFileRandomAccessFile和uploadFileByMappedByteBuffer。 两个方法代码如下。

秒传功能

服务器端逻辑

相信秒传功能是大家都体现出来的,网盘上传的时候,发现上传的文件被秒传了。 其实稍微研究过原理的学生应该知道。 其实是检查文件MD5,记录上传到系统的文件MD5,在一个文件上传之前获取文件内容MD5的值或者部分值MD5,然后匹配系统上的数据。

Breakpoint-http实现了秒进给原理,客户端选择文件后单击上传时触发获取文件MD5值,获取MD5后通过系统界面(/index/check ff 调查那个MD5是否已经存在) )我在这个项目中用redis存储数据,用文件MD5值做key )界面回到检查状态,进入下一个操作。 我想看代码就知道了。

嗯,取前端的MD5的值也是使用了webuploader上搭载的功能。 这是个好工具。

控件在计算文件MD5后,触发md5_complete事件,并传递值MD5。 开发者只需要处理这个事件。

重新分发断点

up6自动连续处理断点,无需进行开发和单独处理。

在f_post.php中接收和处理这些参数。 开发人员只需要关注业务逻辑,而不需要关注其他方面。

断点重新分发是指在文件上载过程中发生中断,由于人为因素(暂停)或不可抗力,文件上载失败了一半。 然后,在环境恢复时,重新上载该文件,而不是从新文件上载。

如上所述,断点持续功能是基于块上传实现的,服务器可以将一个大文件分成多个小块,使每个成功上传的块落地,客户端可以上传文件

调用接口快速验证,条件选择跳过某个分块。

实现原理,就是在每个文件上传前,就获取到文件MD5取值,在上传文件前调用接口(/index/checkFileMd5,没错也是秒传的检验接口)如果获取的文件状态是未完成,则返回所有的还没上传的分块的编号,然后前端进行条件筛算出哪些没上传的分块,然后进行上传。

当接收到文件块后就可以直接写入到服务器的文件中

这是文件块上传的效果

这是文件夹上传完后的效果

这是文件夹上传完后在服务端的存储结构

参考文章:http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7%82%B9%E7%BB%AD%E4%BC%A0%E4%B8%8A%E4%BC%A0/

欢迎入群一起讨论“374992201”

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。