php - Codeigniter - 获取多个文件,重命名它们,然后将其压缩

标签 php codeigniter zip

我正在使用 codeigniter 制作一个网站,使用户能够下载文件,有点像 gmail。我的意思是用户只能下载 1 个文件或 zip 文件夹中的所有文件。

因为会有很多文件,所以我对它们的名称进行了编码以避免重复,并将它们的原始名称存储在一个数据库中,该数据库返回一个这样的数组:

Array
(
    [0] => Array
        (
            [file_id] => 2
            [file_name] => v6_copy.pdf
            [file_path] => uploads/4/d5/67697ff58d09d3fb25d563bf85d3f1ac.pdf
        )

    [1] => Array
        (
            [file_id] => 3
            [file_name] => v4_copy.pdf
            [file_path] => uploads/7/cf/38212079635e93a8f8f4d4a3fc2a11ff.pdf
        )

)

我需要做的是,获取每个文件,将它们重命名为原始名称,然后将其压缩成一个 zip。我目前正在尝试使用 codeigniter zip 助手,但我可以' 似乎能够重命名文件。

foreach ($query->result() as $row) // This returns what you see above
{
    // I need to rename the file somewhere here
    $this->zip->read_file($row->filename); 
}

$this->zip->download('files_backup.zip');

有没有一种方法可以在不手动创建目录、复制文件、重命名然后压缩文件的情况下执行此操作?

非常感谢任何帮助。

最佳答案

CodeIgniter 的 Zip 类 apparently不提供任何重命名条目的方法。您可以使用 PHP 的 native Zip 扩展,它允许您在将文件添加到存档时(以及之后)更改名称。

示例来自 PHP Manual

$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
    $zip->addFile('/path/to/index.txt', 'newname.txt');
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}

关于php - Codeigniter - 获取多个文件,重命名它们,然后将其压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765877/

相关文章:

php - 使用 2 个按钮从一张表单发送 POST 数据

php - 表单数据和按钮在同一个_POST中

codeigniter hmvc 路由无法正常工作

php - Codeigniter,通过变量中包含的值增加数据库值

azure - 如何从数组变量 [fileName 和 FileContent] 创建 zip 文件。使用azure函数或Azure逻辑应用程序(没有任何第三方服务)

python - 流式传输解压存档

php - 显示 woocommerce 销售结束日期

php - Laravel 5.2 - 违反完整性约束 : 1452 Cannot add or update a child row: a foreign key constraint fails

java - 在codeigniter中修改时编辑下拉列表

Android:将 ZIP 解压到内存中并在 WebView 中显示其内容