2013-07-18 71 views
4

以下是我用来强制在codeigniter中的服务器上下载某些文件的代码。下载的文件已损坏,MS Excel无法打开它。我没有看到这个代码有任何问题。我使用ftp从服务器上下载了这些文件并进行了检查,他们只是打开罚款。我不知道我在哪里做错了。codeigniter force_download()为excel文件下载损坏的文件

$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); 
+0

用记事本++或其他文本编辑器打开文件,并检查xlsx顶部的PHP错误。 – user20232359723568423357842364

+0

只有编码数据。没有PHP错误 – user1346107

+0

你正在用文本编辑器打开下载的文件? – user20232359723568423357842364

回答

0

我有一个相同的问题,CI默认不支持xlsx。你将不得不寻找一些库来做到这一点。无论如何,如果你愿意,你可以下载为csv。

0

我想通过下载Excel xlsx-files工作得很好,如果您在加载任何html内容之前在模型中使用force_download()。我在加载任何视图之前在导航模型中使用了force_download。

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); 
0

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

//force_download($name, $data); 

的错误信息和解决路径改正,再次删除评论并运行,然后可以打开下载的文件。