我们收到错误
错误:
错误:不允许您尝试上传的文件类型。
array(1) { ["csv"]=> array(5) { ["name"]=> string(18) "cod_sp_payment.csv" ["type"]=> string(24) "application/vnd.ms-excel" ["tmp_name"]=> string(24) "C:\xampp\tmp\php5910.tmp" ["error"]=> int(0) ["size"]=> int(155) } }
控制器代码:
$config['upload_path'] = './uploads/excel/';
$config['allowed_types'] = 'text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext|text/plain|text/csv|csv';
$this->load->library('upload', $config);
if(! $this->upload->do_upload('csv')) {
$error = array('error' => $this->upload->display_errors());
// $this->load->view('upload_form', $error);
echo $this->upload->display_errors();
}
$upload_data = $this->upload->data();
exit();
答案 0 :(得分:1)
$config['allowed_types'] = 'csv';
可能永远不会做到这一点。您可能需要添加更多类型,如下面的
text/comma-separated-values|application/csv|application/excel|application/vnd.ms-excel|application/vnd.msexcel|text/anytext|text/plain|text/csv|csv
在你的回答中你可以找到
[type] => application/vnd.ms-excel
mime类型为ms-excel
。所以CSV
将不起作用。由于这种不同的mime类型,我们无法指定csv
文件的mimtype
**注意:**代码中还有其他错误
消息:fopen(test2 / uploads / excel / cod_sp_payment.csv):无法打开流:没有这样的文件或目录
请检查文件是否存在
答案 1 :(得分:0)
请确认您的config / mimes.php是否包含文件类型。 要了解上载文件的文件类型,请执行以下操作:
if(! $this->upload->do_upload('csv'))
{
$error = array('error' => $this->upload->display_errors());
// $this->load->view('upload_form', $error);
echo $this->upload->data();
echo $this->upload->display_errors();
}
$upload_data = $this->upload->data();
答案 2 :(得分:0)
这是因为不同的服务器对文件的处理方式不同。它可以是同一个文件,但mime类型不会被视为相同。
解决方案:
在CodeIgniter上,打开文件system / libraries / Upload.php。在第199行(在CI ver.3.x中),将行$this->file_size = $_FILES[$field]['size'];
更改为$this->_file_mime_type($_FILES[$field]); var_dump($this->file_type); die();
将文件上传到服务器进行测试。运行测试。确定您的文件类型。复制稍后要再次使用的文件类型。
现在删除上面步骤1中的更改并重新上传文件。
现在打开文件application / config / mimes.php。转到第97行。它是具有xlsx'的mime类型的部分。在此处粘贴您的新mime类型。将文件上传到您的服务器。
完成。现在您的申请/上传应该有效。
我刚刚在这里找到了类似的答案:CodeIgniter: "The filetype you are attempting to upload is not allowed."
似乎更详细。