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

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

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

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

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

什么是高强度螺栓摩擦型连接(高强度螺栓与普通螺栓误区「高强度钢知识」收藏)

什么是高强度螺栓摩擦型连接(高强度螺栓与普通螺栓误区「高强度钢知识」收藏)

本站之前发表过:高强度螺栓断裂失效分析 M20钢高强度螺栓断裂原因-失效案例分析-舞台高强度螺栓悄悄断裂,氢脆挺可怕! 能承受18吨重量的螺栓是这样做出来的 等文章,今天我们再来一起学习一下:高强度螺栓与普通螺栓误区 这个知识。 高强度螺栓是钢结构施工中最普遍常见的施工内容,所有钢结构工程师都...

卧薪尝胆是谁(历史上卧薪尝胆的人物有哪些)

卧薪尝胆是谁(历史上卧薪尝胆的人物有哪些)

历史上卧薪尝胆的人物:1、勾践;2、韩信;3、司马迁;4、刘邦;5、秦孝公。该成语原意指越王勾践战败后以柴草卧铺,并经常舔尝苦胆,以时时警惕自己不忘所受苦难的故事,后形容人刻苦自励,发奋图强。 资料拓展1、勾践:越王勾践即位,同年,在檇李大败吴师。越王勾践三年(公元前494年),被吴军败于夫椒,被...

48的因数有多少(16和48的最大公因数是多少)

48的因数有多少(16和48的最大公因数是多少)

16和48的最大公因数是16。 几个数公有的因数,叫做这几个数的公因数;其中最大的一个公因数叫做这几个数的最大公因数。 一个数因数的个数是有限的。其中,最小的因数是1,最大的因数是它本身。求一个数的因数,可以通过列乘法算式或除法算式,再按顺序一对一对地找。1, 2, 4,8,16是16和48公...

212事件什么梗(探客100曝光、东风日产要国产全新Pathfinder……丨今日车闻)

212事件什么梗(探客100曝光、东风日产要国产全新Pathfinder……丨今日车闻)

坦克100不存在,但探客100还真的有 近日,一则疑似坦克100的销售内部培训信息在网上传出,让大家在春节前还吃了一趟大瓜。 可惜,在网友们都吃得津津有味的时候,坦克品牌官方很快就发布了一则辟谣的澄清申明出来,称相关信息不实。但是,最近一直传出来的诡异消息,又是为何而引起的呢? 坦克品牌官方澄清...

关于葡萄沟的资料(媒体看建阳丨水吉:千年吉水地)

关于葡萄沟的资料(媒体看建阳丨水吉:千年吉水地)

建阳水吉:千年吉水地 十里葡萄沟 秋冬之交, 走进建阳区水吉镇, 便能看到一片“银色”的繁忙景象。 那“银色”是3200亩葡萄采摘点井然有序的大棚, 是水吉葡萄种植户鼓鼓的口袋, 是科技人才智慧的光芒, 更是水吉镇上最耀眼的新星 “十里山溪葡萄沟”。 十里山溪葡萄沟效果图 2001年种...

怎么获得DNFCDKEY(DNF:15条CDK奖励免费送)

怎么获得DNFCDKEY(DNF:15条CDK奖励免费送)

#2019百度APP游戏年度盛典# 在地下城周边呢,一直存在有很多活动奖励,不过一般这些奖励都是靠运气抽的,所以兄弟们也不必在意,不过最近呢(就是昨天),官方罕见地推出了一波CDK奖励。 什么是CDK呢?其实就是一串代码,然后可以用来领取奖励,好的CDK可以领取时装装备等,而既然是免费送的,自然就没...