我正在尝试使用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是我的信息中心屏幕截图:
正如你可以看到路径很长,因此我不需要所有这些文件夹,我只需要这些文件。
答案 0 :(得分:-3)
HTTP在单次下载中不支持多个文件。因此,使用javascript超时创建基页,将用户重定向到每个文件,一次一个。
示例:
<script type="text/javascript">
var file_list = new Array(
'http://www.example.com/filename1.file',
'http://www.example.com/filename2.file',
'http://www.example.com/filename3.file'
);
for (var i=0; i < file_list.length - 1; i++) {
setTimeout(function () {
document.location = file_list[i];
}, i * 1000);
}
</script>
<h1>Please wait</h1>
<p>Your download will start in a moment.</p>