Codeigniter的zip下载文件为空

时间:2019-10-15 15:02:47

标签: php codeigniter

我有一个页面,用户可以在其中选择要从不同作业下载的文件。每个作业可能有多个文件。提交表单后,文件将发送到一个函数,该函数应将其压缩在不同的作业文件夹中,然后将整个文件压缩并下载。

一切正常,除了当我进入下载的zip文件中的每个文件夹时,它表明在其中有一个数组,但是它是空的。我不确定自己在做什么错。

功能如下:

public function downloadDocFiles() {
    $postdata = $this->input->post();
    $this->load->library('zip');
    $this->load->library('awss3', null, 'S3');
    foreach ($postdata['files'] as $key => $value) {
        $d = $this->S3->readFile('uploads/' . $key . '/' . $value, true);
        $this->zip->add_data($key . '/' . $value, $d);
    }
    $this->zip->download('Completed Jobs.zip');
}

数据通过:

Array
    (
        [files] => Array
            (
                [3454] => Array
                    (
                        [0] => file1.docx
                        [1] => file2.docx
                    )

                [2711] => Array
                   (
                        [0] => nameoffile.docx
                   )

                [1162] => Array
                   (
                        [0] => zyx3.docx
                        [1] => iure8.docx
                   )

             )

)

已下载文件Completed Jobs.zip,其中包含文件夹(3454、2711和1162),但是这些文件夹仅包含大小为0的“数组”。

1 个答案:

答案 0 :(得分:0)

感谢Omas Abbas的帮助。

我将代码更改为此,并且有效:

public function downloadDocFiles() {
    $postdata = $this->input->post();
    $this->load->library('zip');
    $this->load->library('awss3', null, 'S3');
    foreach ($postdata['files'] as $key => $value) {
        $count = count($postdata['files'][$key]);
        for ($i = 0; $i < $count; $i++) {
            $d = $this->S3->readFile('uploads/' . $key . '/' . $value[$i], true);
            $this->zip->add_data($key . '/' . $value[$i], $d);
        }
    }
    $this->zip->download('Completed Jobs.zip');
}