gpt4 book ai didi

php - 在 PHP 中提供数字产品下载的最佳方式是什么?

转载 作者:可可西里 更新时间:2023-11-01 00:28:19 25 4
gpt4 key购买 nike

客户为下载链接付费的数字商业产品。

我已将所有压缩文件(产品)放在网络文档根目录之外,买家通过与 paypal IPN 集成的 php 脚本下载它们,以确保下载者是付费买家。

有点像:http://www.mysite.com/download.php?buyer_id=xxx

到目前为止,这一切都只解决了一个问题。我通过上述 URL 下载的 zip 文件已损坏,无法使用 WinRAR 正确打开。但是,直接下载 zip 就可以了。

我的代码:

$path = WAREHOUSE_PATH.'/products/'.$identifier.'.zip';
$mm_type="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: " . $mm_type);
header("Content-Length: " .(string)(filesize($path)) );
header('Content-Disposition: attachment; filename="'.basename($path).'"');
header("Content-Transfer-Encoding: binary\n");

$fp = @fopen($path,"rb");
if ($fp) {
while(!feof($fp)) {
print(fread($fp, 1024*8));
flush();
if (connection_status()!=0) {
@fclose($fp);
die();
}
}
@fclose($fp);
}

有什么问题吗?谢谢!

问题已解决:谢谢大家的提示。事实证明,下载的软件包包含一些不应该存在的额外空白。傻。

最佳答案

我建议改变这个:

$fp = @fopen($path,"rb");
if ($fp) {
while(!feof($fp)) {
print(fread($fp, 1024*8));
flush();
if (connection_status()!=0) {
@fclose($fp);
die();
}
}
@fclose($fp);
}

对此

readfile($path);

您可以在 readfile here 上找到更多信息, 但基本上它会完成你的循环所做的一切。

关于php - 在 PHP 中提供数字产品下载的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/482972/

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