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

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

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

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

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

雪夜上梁山的主人公是谁(百科语文「名著共读」《水浒传》10林冲《林冲雪夜上梁山》)

雪夜上梁山的主人公是谁(百科语文「名著共读」《水浒传》10林冲《林冲雪夜上梁山》)

《水浒传》之《林冲雪夜上梁山》(1)《水浒传》之《林冲雪夜上梁山》(1) 04:46未知来源 文/根号三Olivia 主播/根号三Olivia 解读预告 亲爱的听友大家好,欢迎来到百科语文,我是主播根号三Olivia。 今天我们共读的是《水浒传》中的重要情节——《林冲雪夜上梁山》...

文章的高度是甚么(什么样的文章才算高质量)

文章的高度是甚么(什么样的文章才算高质量)

自媒体创业的伙伴们,每天都在搞一件事,那就是创作高质量的文章 高质量,几乎是一个每天都挂在嘴边的词,可到底什么样的文章才算是高质量的文章呢?我来分享一些我的经验,仅供大家参考 1、能获得高推荐的文章,就可以算是高质量的文章 没个自媒体平台,都对文章的内容进行查重,如果你复制别人的文章,仅仅是进行了...

植物播种的方法(怎么种花的正确方法)

植物播种的方法(怎么种花的正确方法)

种花的正确方法如下; 1.种花前,要为花卉准备好一个盆底带孔的花盆,可以用土盆、陶盆或瓷盆,然后需要为花盆进行消毒杀菌,防止花卉因细菌而产生病害,也需要在花盆的底部垫上底盘,避免花盆内的土壤漏出。 2.种花养花一般在遮雨或适当遮光降温等基础设施才能达到各种品种出芽所需要的条件保证其出芽率。 3....

电磁波的传播速度是多少(电磁波的传播速度)

电磁波的传播速度是多少(电磁波的传播速度)

电磁波在真空中的传播速度等于光速,在介质中会小于光速。电磁波的传播速度与电磁波的频率有关。电磁波是由同向且互相垂直的电场与磁场在空间中衍生发射的震荡粒子波,是以波动的形式传播的电磁场,具有波粒二象性。电磁波的传播速度是3×10^8m/s。 电磁波的传播有沿地面传播的地面波,还有从空中传播的空中波以及...

跆拳道比赛规则(世界跆拳道锦标赛)

跆拳道比赛规则(世界跆拳道锦标赛)

北京时间11月15日,2022跆拳道世界锦标赛在墨西哥瓜达拉哈拉继续进行。中国队传来喜讯,在女子57公斤级比赛中,中国名将骆宗诗先在半决赛击败英国名将琼斯,随后在决赛中以大比分2比0击败中国台北选手罗嘉翎,为中国队拿下本届世锦赛的首枚金牌。 受疫情影响,跆拳道世锦赛在2020和2021年均未能如期...