Php 您尝试上载的文件类型不允许使用codeigniter 3.0.4版
我们遇到了一个错误 错误: 错误:不允许尝试上载的文件类型 控制器代码:Php 您尝试上载的文件类型不允许使用codeigniter 3.0.4版,php,codeigniter,Php,Codeigniter,我们遇到了一个错误 错误: 错误:不允许尝试上载的文件类型 控制器代码: $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/
$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();
$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
文件的MIM类型
**注意:**您的代码中还有一个错误
消息:fopen(test2/uploads/excel/cod_sp_payment.csv):无法打开流:没有这样的文件或目录
请检查文件是否存在请确认您的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();
这是因为不同的服务器处理文件的方式不同。它可以是相同的文件,但mime类型不会被视为相同
解决方案:
在CodeIgniter上,打开文件系统/libraries/Upload.php。在第199行(在CI版本3.x中),更改行$this->file\u size=$\u FILES[$field]['size']
到$this->\u文件\u mime\u类型($\u文件[$field]);变量转储($this->file\u type);模具()代码>
将文件上载到服务器以进行测试。运行测试。确定您的文件类型。复制文件类型,以便以后再次使用
现在删除上面步骤1中的更改并重新上载文件
现在打开文件application/config/mimes.php。转到第97行。它是具有“xlsx”mime类型的部件。通过将新mime类型粘贴到此处,将其包括在内。将文件上载到服务器
完成了。现在你的应用程序/上传应该可以工作了
我在这里找到了一个类似的答案:
它似乎更详细。@但是很难理解注释中的代码。您可以随时通过单击标签下面的“编辑”按钮来更新您的问题。@Arun我们已经按照您的建议更改了代码。请检查以上代码
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();