使用PHP下载多个文件

时间:2018-04-15 16:04:45

标签: php mysql file server download

我正在尝试使用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是我的信息中心屏幕截图:

正如你可以看到路径很长,因此我不需要所有这些文件夹,我只需要这些文件。

1 个答案:

答案 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>