【问题标题】:codeigniter force_download() for excel file downloading a corrupt filecodeigniter force_download() 用于下载损坏文件的 excel 文件
【发布时间】:2013-07-17 12:23:20
【问题描述】:

以下是我用来在 codeigniter 中强制在我的服务器上下载一些文件的代码。下载的文件已损坏,MS Excel 无法打开它。我认为这段代码没有任何问题。我使用 ftp 从服务器下载文件并检查,它们打开正常。我不知道我做错了什么。

$this->load->helper('download');
$path = base_url('reference/filename.xlsx');
$data = file_get_contents($path); // Read the file's contents
$name = 'filename.xlsx';
force_download($name, $data); 

【问题讨论】:

  • 用notepad++或其他文本编辑器打开文件,检查xlsx顶部的PHP错误
  • 只有编码数据。没有 PHP 错误
  • 你正在用文本编辑器打开下载的文件?
  • 文件中的第一个字符是什么?
  • 是的,我用文本编辑器打开了文件

标签: php codeigniter download helper


【解决方案1】:

你的答案是正确的。但路径不正确。但不显示错误消息。评论并运行。然后你可以看到路径的错误信息

//force_download($name, $data); 

并修正路径以更正并再次删除评论并运行,然后可以打开下载的文件。

【讨论】:

    【解决方案2】:

    在获取数据之前使用 ob_clean() 函数刷新输出缓冲区。

    您的代码现在应该如下所示。

    $this->load->helper('download');
    $path = base_url('reference/filename.xlsx');
    
    ob_clean();
    
    $data = file_get_contents($path); // Read the file's contents
    $name = 'filename.xlsx';
    force_download($name, $data);
    

    【讨论】:

      【解决方案3】:

      我发现如果在加载任何 html 内容之前在模型中使用 force_download(),下载 Excel xlsx 文件就可以了。在加载任何视图之前,我在导航模型中使用 force_download。

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,CI 默认不支持 xlsx。您将不得不找到一些库来执行此操作。无论如何,您可以根据需要下载为 csv。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-13
          • 1970-01-01
          • 1970-01-01
          • 2015-01-17
          • 1970-01-01
          • 2012-02-23
          • 1970-01-01
          相关资源
          最近更新 更多