gpt4 book ai didi

php - header ('Content-type: application/octet-stream' ) 导致 0 字节文件

转载 作者:可可西里 更新时间:2023-11-01 13:21:32 27 4
gpt4 key购买 nike

我在 PHP 中使用数据库查询来检索二进制文件。但是当我试图强制下载它时,header('Content-type: application/octet-stream') 行导致 0 字节文件。如果没有那一行,我可以下载包含完整内容的文件。这是肯定的二进制文件,所以我只是不明白为什么该行会导致问题。代码:

$result = mysql_query("SELECT data FROM stored_file WHERE file_name = '$q'");

while($row = mysql_fetch_array($result))
{
$file = $row['data'];
}


header('Content-disposition: attachment; filename='.$q);
header('Content-type: application/octet-stream');
header('Content-Length: '.filesize($file));
header("Pragma: no-cache");
header("Expires: 0");
echo $file;

有什么想法吗?谢谢。

最佳答案

filesize()不会返回有意义的值。

$file 中有二进制数据,不是第一个参数所需的实际文件名。因此你会得到一个错误。 (启用 error_reporting!看不到错误和没有错误是两回事。)

所以您要使用的是 strlen($file),而不是 filesize()

顺便说一句,application/octet-stream 或其他填充项对强制下载没有用处。 Content-Disposition: header 对此效果最为关键。您仍然可以发送正确的 MIME 类型。

关于php - header ('Content-type: application/octet-stream' ) 导致 0 字节文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com