【发布时间】:2018-04-15 16:04:45
【问题描述】:
我正在尝试使用 PHP 下载多个文件。我知道它只能通过使用 zip 存档来完成,但我不希望所有目录和子目录都包含在下载的文件夹中,我只需要文件。
我尝试使用“basename()”,但是当我这样做时它不会下载任何东西,以下是我的代码。
我还尝试创建一个仅包含使用“basename()”提取的文件名的新数组,但它仍然无法下载。
if ( extension_loaded( 'zip' ) ) {
$zipFolder = new ZipArchive();
$zipName = time().".zip";
if ( $zipFolder->open( $zipName, ZIPARCHIVE::CREATE ) !== TRUE ) {
echo "Sorry ZIP creation failed at this time";
}
foreach ( $filepathArray as $f ) {
$zipFolder->addFile($f);
}
$zipFolder->close();
if ( file_exists( $zipName ) ) {
header( 'Content-type: application/zip' );
header( 'Content-Disposition: attachment; filename="' . $zipName . '"' );
readfile( $zipName );
unlink( $zipName );
}
}
This 是我的仪表板屏幕截图:
你可以看到它的路径很长,因此我不需要所有这些文件夹,我只需要文件。
【问题讨论】:
-
我认为您应该对此有所不同。与其将整个目录作为句柄,不如循环遍历远程目录并仅返回您想要的文件。然后将其作为文件句柄数组传递给您的 zip 库。
标签: php mysql file server download