为什么pdf上传在codeigniter 1.7.2上失败?
我也有同样的问题。其他文件doc,xls上传很好。但pdf上传会出错。“不允许您尝试上载的文件类型。” 在config/mimnes.php中,我有:为什么pdf上传在codeigniter 1.7.2上失败?,codeigniter,file-upload,Codeigniter,File Upload,我也有同样的问题。其他文件doc,xls上传很好。但pdf上传会出错。“不允许您尝试上载的文件类型。” 在config/mimnes.php中,我有: 'pdf' => array('application/pdf', 'application/x-download', 'application/download'), 在控制器中,我有: function upload_file($type, $upload_type) { $this->load->
'pdf' => array('application/pdf', 'application/x-download', 'application/download'),
在控制器中,我有:
function upload_file($type, $upload_type)
{
$this->load->library('upload');
//upload file
switch($upload_type){
case "image":
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|jpg|png|pdf';
$config['max_size'] = '3000';
$config['max_width'] = '3224';
$config['max_height'] = '1268';
break;
case "doc":
$config['upload_path'] = './uploads/pages/doc/';
$config['allowed_types'] = 'pdf|doc|docx|xls|ppt';
$config['max_size'] = '3000';
$config['encrypt_name'] = TRUE;
break;
}
foreach($_FILES as $key => $value)
{
if( ! empty($value['name']))
{
$this->upload->initialize($config);
if ( ! $this->upload->do_upload($key))
{
$errors = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('flashError', $errors);
}
else
{
$this->page_model->process_file($type, $upload_type);
}
}
}
}
任何帮助都将是可观的。删除此行:
$this->load->library('upload');
然后在开关块的末尾和foreach块之前添加这一行
$this->load->library('upload', $config);
您正在加载上载库,然后设置配置值,这没有效果
修改后的函数应如下所示:
function upload_file($type, $upload_type)
{
//upload file
switch($upload_type){
case "image":
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|jpg|png|pdf';
$config['max_size'] = '3000';
$config['max_width'] = '3224';
$config['max_height'] = '1268';
break;
case "doc":
$config['upload_path'] = './uploads/pages/doc/';
$config['allowed_types'] = 'pdf|doc|docx|xls|ppt';
$config['max_size'] = '3000';
$config['encrypt_name'] = TRUE;
break;
}
$this->load->library('upload', $config);
foreach($_FILES as $key => $value)
{
if( ! empty($value['name']))
{
$this->upload->initialize($config);
if ( ! $this->upload->do_upload($key))
{
$errors = array('error' => $this->upload->display_errors());
$this->session->set_flashdata('flashError', $errors);
}
else
{
$this->page_model->process_file($type, $upload_type);
}
}
}
}
你在使用FireFox吗?我也有同样的问题,由FF发起。报告的mimetype是application/binary,因此可以在mimes.php中进行更改
'pdf' => array('application/pdf', 'application/x-download', 'application/binary'),
这应该可以解决问题。我也有同样的问题,但我发现一些PDF文件在FireFox中是以typeapplication/octet stream的形式发送的。我不知道为什么。但尝试打开mimetype.php,将其添加到pdf文件的mimetype数组中,如下所示:
“pdf'=>数组('application/pdf'、'application/x-download'、'application/binary'、'application/octet stream'),我已经初始化了配置,比如$this->upload->initialize($config);同样的事情不需要做两次。ya$upload\u类型正确。但今天我发现:我可以交替上传文件。如果我上传一个doc文件和一个pdf文件,那么这两个文件都会上传。如果我只上传pdf文件,它不会。原因可能是什么?一点也不。它在ie中运行良好,但在firefox中不起作用。我正在使用3.6.13来查看正在处理的内容,您可以添加一个打印($文件)并复制输出吗?这是我的:数组([nuevoarchivo]=>Array([name]=>110_2008.pdf[type]=>application/pdf[tmp_name]=>/tmp/phpDLUXpE[error]=>0[size]=>30680])在“image”中:您已经包含了$config['allowed_types']='gif | jpg | jpg | png | pdf';可能是因为大小限制等原因,当您尝试将pdf作为图像上传时失败了。