我有一个页面,用户可以在其中选择要从不同作业下载的文件。每个作业可能有多个文件。提交表单后,文件将发送到一个函数,该函数应将其压缩在不同的作业文件夹中,然后将整个文件压缩并下载。
一切正常,除了当我进入下载的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的“数组”。
答案 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');
}