当前位置:首页 > 问答百科 > 正文内容

传输大文件的方法,大文件如何传输

福瑞号2023-05-17 16:19:55问答百科174

1.格式化U盘为NTFS或exFAT格式来支持传输大于4G的文件;2.使用QQ客户端的“发送微云文件”功能传输大文件;3.可以将大文件上传至网页、网盘或邮箱等载体进行传输;4.使用联想企业网盘来解决电子邮件附件容量和上传速度的问题;5.使用20CN迷你FTP服务器来分享文件;6.压缩打包大文件后发送;7.通过邮箱的云附件功能上传文件并添加到邮件附件中。



文件太大上传不了?看这里,秒传

传输大文件的方法,大文件如何传输-图1

前言

相信很多开发者,都做过文件上传的功能。简单的文件上传很容易,在PHP里两个函数就能搞定:

file_existsmove_uploaded_file

第一个函数判断文件是否存在,第二个函数上传文件。

但是如果上传的文件有几百M或几个G的时候,这样简单操作可能就不灵了,可能会出现timeout或内存溢出的情况。

之所以会这样,是因为上传文件时服务器是先将文件内容保存在内存中,然后才保存到文件中。另外,服务器对单次上传请求有时间和内存的限制,内存耗尽或时间超时,上传请求会被终止。虽然这两个值也是可以调整的,但是由于实际上传的文件是未知的,所以你也不确定多大的值是合适的。另外,如果内存限制设置得太大,时间设置太长,当你上传一个大文件时,有可能会将服务器内存耗尽,拖垮整个服务。

那如何解决大文件上传的问题呢?

当然是从这前面说到的两个原因着手!既然是因为文件太大,才导致请求耗时太长,内存占用太大,那我们可以将大文件分割成一个个小文件上传,也就是采用分片上传。

首先是前端将大文件分片上传,然后是后端将所有分片按顺序合并起来。如下:

传输大文件的方法,大文件如何传输-图2

前端分片我们可以使用webuploader.js组件,后端我们直接用Laravel框架即可。使用webuploader进行分片上传很简单,只需要配置几个参数即可,如下:

传输大文件的方法,大文件如何传输-图3

其中,chunked表示是否开启分片上传;chunkSize表示分片的大小,单位字节;threads表示并发量。这里需要注意的是由于计算文件的md5值需要一定的时间,所以这里没有使用自动上传,而是将选择文件和上传分成了两步。

后端部分需要接收file、chunks、chunk、md5、size几个参数,其中md5用于判断文件的唯一性,chunks、size用于判断分片是否上传完毕,如下:

传输大文件的方法,大文件如何传输-图4

这里也有一点需要注意,那就是服务端合并文件的时候最好使用stream_copy_to_stream进行流式操作,而不要直接file_put_contents。因为流式操作是一点点的合并的,不需要把全部的内容放在内存里,这样可以避免在合并分片的时候内存溢出。

另外,考虑到分片上传有可能存在部分成功的情况,因此,需要设置一个定时任务用于清除临时文件,以减少服务器的资源浪费。如下:

传输大文件的方法,大文件如何传输-图5

如此,大文件上传的问题就解决了。

虽然,这里使用PHP做服务端的演示,但是使用Java、Golang,依然可以参考本案例,因为原理基本一样。

扫描二维码推送至手机访问。

版权声明:本文由福瑞号发布,如需转载请注明出处。

本文链接:https://www.furui.com.cn/176180.html

“传输大文件的方法,大文件如何传输” 的相关文章

电视剧死亡笔记男主的扮演者是谁(太可惜)

电视剧死亡笔记男主的扮演者是谁(太可惜)

如今的世道, 鲜肉当道,整容横行 ,新出来的演员只要是有点姿色,没有演技, 照样头条、广告接不停, 本来,炮哥要拿曾经喜欢过的鲜肉们跟现在的比对比对, 但没想到他们都不争气地长残了。( ) 松山健一 松山健一 曾经的男神, 《死亡笔记》 的男主,他就是“L”的扮演者, 松山健一,对于漫...

父亲节快乐英文怎么写(看看特朗普的儿女们是怎么祝福父亲节的)

父亲节快乐英文怎么写(看看特朗普的儿女们是怎么祝福父亲节的)

父亲节用英文怎么说?怎么用英文写父亲节祝福语?来看美国总统特朗普一家是如何表达对父亲节的节日祝福。 父亲节快乐的英文是Happy Father’s Day,其中Father是单数,并且大写。 大女儿第一千金伊万卡在推特上发推说:“祝我的父亲及所有甘于奉献和慈爱的父亲节日快乐!今天属于你们!”(Hap...

乙醚是什么东西有什么作用(ch2o是什么物质)

乙醚是什么东西有什么作用(ch2o是什么物质)

ch2o是什么物质? ch2o指的是甲醛。这是一种化学物质,我们学习化学的时候,总是会接触到很多的化学物质,比如乙醚、二氧化碳等,甲醛也是其中一种。不敢什么类型的化学物质,可能有些对我们的身体都存在着或多或少的危害,尤其是刺激性比较重的物质,甲醛就是其中一种。因此在遇到这种情况的时候或者我们在做实验...

什么是丁克族(我国首批“丁克族”步入晚年)

什么是丁克族(我国首批“丁克族”步入晚年)

"丁克是我的生活方式,我很满意自己的生活……";"我不想再以丁克的方式生活下去了"……对于丁克族,每个人都有不同的看法。而人们是否选择丁克生活的原因,也正随着社会环境的改变而改变。 随着社会生活环境的改变,婚姻和生育已经从部分人的人生必选项中消失,而这对于他们的影响也并不是必然的好或者坏。有人对于丁...

虹光扫描仪怎么用(关于虹光扫描仪使用方法的介绍)

虹光扫描仪怎么用(关于虹光扫描仪使用方法的介绍)

随着科技的发展,人们的日常生活中出现了许许多多 高科 技产品,扫描仪就是其中之一。扫描仪这种高科技产品是属于高精度的光电一体化,它能够将各种形式的图像信息输入计算机,并且能够对图像进行很多处理功能。然而,对于这种高科技产品,很多人都不清楚如何正确使用。针对这个问题,小编将以虹光扫描仪为例,简短地向...

什么是被子植物(被子植物的概念是什么)

什么是被子植物(被子植物的概念是什么)

被子植物的概念:被子植物是种子植物的一种,具有根茎叶果实种子的分化。 被子植物 又名开花植物或有花植物。是有胚植物中为数最多且最为人所知的一种,是植物界最多样化的种类,约有304000种。开花植物是现时地球上演化最先进具有优势的植物种类。开花植物和裸子植物一起合称为种子植物。 被子植物是当今世界植物...