gpt4 book ai didi

用于传送最新版本文件的 PHP 脚本

转载 作者:行者123 更新时间:2023-12-04 05:07:02 27 4
gpt4 key购买 nike

我的 PHP 生锈了,我希望有人能帮我写一个快速脚本——我真的不知道从哪里开始!

我有一个文件夹,其中包含软件产品的各种版本的压缩文件:

  • Product_1.00.zip
  • Product_1.05.zip
  • Product_2.00.zip

等等

现在,在我的网站上有一个下载产品的按钮。但是,我希望该按钮始终下载最新版本。

在我看来,一个不错的解决方案是链接到一个 PHP 脚本,该脚本会扫描文件夹中的最新版本并将该文件交付给用户,就好像他们已将浏览器直接指向该文件一样。

谁能给我一个起点?

最佳答案

我认为从目录中读取文件到数组中是最简单的。然后 natsort 数组并弹出最后一个条目。

这是一个例子:

<?php
function getLatestVersion() {
$dir = dir('.');
$files = array();

while (($file = $dir->read()) !== false) {
$files[] = $file;
}
$dir->close();

natsort($files);
return array_pop($files);
}

输出

array(6) {
[0]=>
string(1) "."
[1]=>
string(2) ".."
[2]=>
string(16) "Product_1.00.zip"
[3]=>
string(16) "Product_1.05.zip"
[5]=>
string(16) "Product_2.00.zip"
[4]=>
string(17) "Product_10.00.zip"
}

如何下载最新版本的zip文件?

编辑

就像@j_mcnally 在他下面的评论中指出的那样,让网络服务器处理静态文件的服务效率更高。可能的方法是直接链接或使用 301 将请求从 PHP 文件重定向到正确的位置。

但如果您仍然想让 PHP 完成工作。这是一个例子。


http://perishablepress.com/http-headers-file-downloads 中获取了以下示例并对其进行了一些改动。

<?php // HTTP Headers for ZIP File Downloads
// http://perishablepress.com/press/2010/11/17/http-headers-file-downloads/

// set example variables

// Only this line is altered
$filename = getLatestVersion();

$filepath = "/var/www/domain/httpdocs/download/path/";

// http headers for zip downloads
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: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$filename."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filepath.$filename));
ob_end_flush();
@readfile($filepath.$filename);
?>

关于用于传送最新版本文件的 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15410205/

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