使用php下载多个文件

9rygscc1  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(381)

我正在尝试使用php下载多个文件。我知道这只能通过使用压缩档案来完成,但我不希望所有的目录和子目录都包含在下载的文件夹中,我只需要这些文件。
我试过使用“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 );
        }
    }

这是我的 Jmeter 板截图:
正如你看到的路径相当长,因此我不需要所有的文件夹,我只需要文件。

o2gm4chl

o2gm4chl1#

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>

相关问题