如何解决PHP 下载准备好的 zip 文件放在 SFTP 上 - wordpress
所以我正在尝试准备好放在我的 sftp 主机上的 zip 文件。我正在使用 wordpress。
要列出放置在特定文件夹中的 zip 文件,我使用此功能:
<?php
function getListOfZipNames() {
$base_dir = '/srv/data/web/vhosts/iuu.COMPANY.com/zips/';
$fileList = glob($base_dir.'*.zip',GLOB_BRACE);
return $fileList;}
?>
要获取当前 URL 名称,我使用此函数:
function getCurrentUrl() {
global $wp;
$homeUrl = home_url($wp->request);
$new_url = substr($homeUrl,25,100);
return $new_url;
}
比较它(应该只是下载的文件与 URL 同名(域名后)) 例如https://company.com/asdsadfssd-345435-sdf23-dassdfds-.zip 我使用这个功能:
function compareUrlWithZipName() {
$homeURL = getCurrentUrl();
echo $homeURL;
echo "<p></p>";
$listOfZipNames = getListOfZipNames();
foreach($listOfZipNames as $filename) {
if(is_file($filename)){
// echo basename($filename);
if(basename($filename) === $homeURL)
{
downloadFile($filename);
}
else {
echo " NOT PAIR ";
}
echo " ";
}}
}
以上功能没问题。相比之下,我正在调用 downloadFile 并且我无法下载任何文件。我尝试了很多方法,但是当我添加:
header("Content-type: application/zip");
我在我的网页上收到了以下信息: Error message
如果没有这个标题,它会打印在我的网页上: printedOnWebsite
这是我目前尝试用来下载 zip 文件的代码:
function downloadFile($filename) {
$zipName = basename($filename);
$zipPath = $filename;
if (file_exists($zipPath)) {
echo "exist";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate,post-check=0,pre-check=0");
header("Cache-Control: public");
header("Content-type: application/zip");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=\"".$zipName."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($zipPath));
ob_end_flush();
@readfile($zipPath);
exit;
}else{
echo "doesn't exist";
}}
这个文件放在我的 sFTP 服务器上,这个服务器会被其他 zip 文件自动填满。 当用户知道 URL 时,应该有可能只获得一个与 URL 同名的 zip。应自动强制下载。
任何想法如何解决这个问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。