以下是我用于在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);
答案 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);
并修正路径以更正并再次删除评论和运行,然后可以打开下载的文件。