PHP如何通过http传输大文件?

‘前端’是UE4,通过http协议从我的nginx服务器下载大文件,文件传输必须将数据使用base64加密,网上百度了很多传输方法,这些方法都是针对前端是浏览器的情况,而... ‘前端’是UE4,通过http协议从我的nginx服务器下载大文件,文件传输必须将数据使用base64加密,网上百度了很多传输方法,这些方法都是针对前端是浏览器的情况,而我现在的情况是我服务器只是提供一个数据接口,‘前端’并不是浏览器,百度的方法如下:
1.fread分段读取
2.readfile整个读取
3.file_get_counts整个读取
4.curl传输
他是通过base64加密传输,所以分段传输好像不能实现,只能将文件整个读取出来,base64加密,然后传输,我的代码如下:
public function actionPak()
{
set_time_limit(0);
//接收上传的数据
$post_data = file_get_contents('php://input');

// 解析json字符串
$json_obj = json_decode($post_data);
if (isset($json_obj->Num)) {
$file = \Yii::getAlias('@webroot') . '/pattern/pak/' . $json_obj->Num . '.pak';
//开启缓存
ob_start();
readfile($file);
$data = ob_get_contents();
ob_end_clean();
return base64_encode($data);
} else {
return base64_encode('false');
}
}

除了curl没有尝试过,其他方法都试过,现在的问题就是对于小文件传输是没有问题,当文件大小有几十M到几百M的时候,就会出现传输失败的情况。有没有大佬指点一下,谢谢
展开
 我来答
app_versionbff
2018-08-31 · TA获得超过436个赞
知道小有建树答主
回答量:402
采纳率:97%
帮助的人:304万
展开全部
其实最简单的办法就是把默认上传文件大小的配置改大一点就行了。比如你要上传一个小于50M的文件
1.php的配置文件改动:
upload_max_filesize 50M;
post_max_size 50M;
2.nginx的配置文件nginx.conf:
client_max_body_size 50m;
更多追问追答
追问
我现在不是要上传文件到我的服务器,我是需要别人从我的服务器下载大文件,你说的这几个参数我在最初就改过了,对于文件下载没有任何变化
追答
首先你上传问题解决了没有,下载跟该这个没关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深忘浅忆
2018-08-31 · TA获得超过220个赞
知道小有建树答主
回答量:136
采纳率:96%
帮助的人:64.3万
展开全部
可以采用nginx的upload模块+断点续传
追问
有没demo之类,我去查了一下,这个upload好像是做上传用的模块
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式