我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载
Posted
技术标签:
【中文标题】我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载【英文标题】:Not enough chunks in my chunksize - PHP download script result in 20% file size download 【发布时间】:2011-07-19 07:06:41 【问题描述】:试图下载整个文件——但我假设脚本正在退出流中的第一个 chunksize 通道。
需要对什么进行编码才能获得完整的文件大小下载?
$image_link=$_GET['image_link'];
$fullPathDL=$path0.$image_link;
$fsize = 文件大小($fullPathDL);
$path_parts = pathinfo($fullPathDL);
if ($fd = fopen($fullPathDL, "rb"))
$fsize = 文件大小($fullPathDL);
header("内容类型:应用程序/jpg"); // 在此处添加更多的 diff 标头。扩展
header("内容配置:附件;文件名=\"".$path_parts["basename"]."\""); // 使用 'attachment' 强制下载
header("内容长度:$fsize");
// header("缓存控制:私有"); //使用这个直接打开文件
而(!feof($fd))
$buffer = fread($fd, 8192);
echo $buffer;
fclose ($fd);
exit;
【问题讨论】:
到底发生了什么?我不明白。 你在说什么块?您没有要求分块传输编码,也没有为分块传输编码创建语法正确的块...... 【参考方案1】:您的示例不起作用的原因是完全存在于缓冲区中。 自从我查看标准以来已经有一段时间了,但至少我可以让你朝着正确的方向迈出一步。基本上,当从分块传输中读取时,我认为前几个字节代表了块中的字节数。像这样的东西(取自***)。
25
This is the data in the first chunk
1C
and this is the second one
3
con
8
sequence
0
你基本上需要检查要读取的字节数,读取字节数,然后重复,直到要读取的字节数为0。
完成此操作的最简单方法是在请求标头中指定 HTTP 1.0(不支持分块传输),或使用为您处理此问题的库,即 CURL。
【讨论】:
是的,我考虑过 CURL,但坦率地说,我希望有一种比找出另一个库练习更简单的方法。但是谢谢,约翰,会试一试的。以上是关于我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载的主要内容,如果未能解决你的问题,请参考以下文章