为什么pdf上传在codeigniter 1.7.2上失败?

为什么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->

我也有同样的问题。其他文件doc,xls上传很好。但pdf上传会出错。“不允许您尝试上载的文件类型。” 在config/mimnes.php中,我有:

'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作为图像上传时失败了。