You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CodeIgniter Zip类下载文件时出现0KB问题求助

排查CodeIgniter Zip类生成0KB压缩包的问题

遇到压缩包下载后大小为0KB的问题,大概率是没有成功向压缩包中添加任何有效文件,结合你的代码,我整理了几个核心排查点和修复方案:

1. 相对路径导致文件存在判断失效

你当前用file_exists("uploads/files/".$filedata)做存在性检查,但这个相对路径是相对于CodeIgniter的入口文件(index.php)所在目录吗?如果你的控制器不在根目录,或者请求的路由层级不同,相对路径会出错,导致file_exists返回false,循环里没有添加任何文件。

修复方案:用CodeIgniter内置的常量FCPATH(指向index.php所在的根目录)拼接绝对路径:

$local_file_path = FCPATH . "uploads/files/" . $filedata;
if(file_exists($local_file_path)) {
    // 后续操作
}

2. 使用URL读取文件内容的风险

你用base_url()拼接出URL,再通过file_get_contents($filename)读取文件,这会发起HTTP请求来获取文件内容,可能遇到两个问题:

  • 服务器的allow_url_fopen配置为Off,导致无法通过URL读取文件;
  • 即使能读取,也可能因为网络或权限问题返回空内容,最终添加到压缩包的是空白文件。

修复方案:直接使用服务器本地的绝对路径读取文件内容:

$this->zip->add_data($filedata, file_get_contents($local_file_path));

3. 确认Zip库已正确加载

虽然你能调用$this->zip,但还是要确认Zip库已经被加载:

  • 可以在控制器方法开头手动加载:$this->load->library('zip');
  • 或者在application/config/autoload.php中添加'zip'到$autoload['libraries']数组,实现全局自动加载。

修复后的完整代码示例

public function downloadzip($argID){ 
    $this->load->library('zip'); // 确保加载Zip库
    $data = $this->Audit_started_model->getZipImagesOfSchool($argID); 
    
    foreach($data as $r): 
        $filedata = $r->file_name;
        $local_file_path = FCPATH . "uploads/files/" . $filedata;
        
        if(file_exists($local_file_path)) { 
            // 用本地路径读取文件内容,添加到压缩包
            $this->zip->add_data($filedata, file_get_contents($local_file_path)); 
        } 
    endforeach; 

    // 检查压缩包是否有内容,避免下载空文件
    if ($this->zip->get_files() !== []) {
        $this->zip->download(date('d-M-Y')); 
    } else {
        // 可以给用户提示没有可下载的文件
        echo "没有可用的文件可打包下载";
    }
}

额外验证步骤

  • 手动检查服务器上FCPATH/uploads/files/目录下是否存在你要打包的文件;
  • 在循环中添加var_dump(file_exists($local_file_path)),确认哪些文件能被正确检测到;
  • 检查服务器的PHP错误日志,看是否有file_get_contents相关的错误信息。

内容的提问来源于stack exchange,提问作者Jitendra Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:11:48