codeigniter force_download()用于excel文件下载损坏的文件

时间:2013-07-18 13:51:11

标签: php codeigniter download helper

以下是我用于在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); 

4 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,CI默认不支持xlsx。你必须找到一些lib才能做到这一点。无论如何,如果你愿意,你可以下载为csv。

答案 1 :(得分:0)

我想出下载Excel xlsx文件可以正常工作,如果你在加载任何html内容之前在模型中使用force_download()。在加载任何视图之前,我在导航模型中使用force_download。

答案 2 :(得分:0)

在获取数据之前,使用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 :(得分:0)

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

//force_download($name, $data); 

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