3

在本地工作,但在我尝试过的两台服务器上显示相同的错误消息。使用 Codeigniter 2.1.3

private function upload_file(){
    $config['upload_path'] = './uploads/';
    $config['allowed_types'] = 'jpg|png|jpeg|gif|pdf';
    $config['max_width']  = '0';
    $config['max_height']  = '0';
    $config['encrypt_name']  = true;
    $this->load->library('upload', $config);
    var_dump($_FILES);
    if ( ! $this->upload->do_upload()){
        $error = array('error' => $this->upload->display_errors());
        var_dump($error);
        die();
        return $error;
    } else {
        $data = array('upload_data' => $this->upload->data());
        var_dump($data);
        die();
        return $data;
    }
}

在执行此操作时,var_dump($_FILES);它会显示正确的信息 array(1) { ["userfile"]=> array(5) { ["name"]=> string(8) "0002.pdf" ["type"]=> string(14) "aplication/pdf" ["tmp_name"]=> string(27) "C:\Windows\Temp\php9454.tmp" ["error"]=> int(0) ["size"]=> int(29295) } }

var_dump($error)放出array(1) { ["error"]=> string(64) " The filetype you are attempting to upload is not allowed. " }

使用 png 和 jpg 进行了测试,这些作品非常出色。

正确的 mime 类型在配置文件中config/mimes.php

 'pdf'  =>  array('application/pdf', 'application/x-download'),

编辑:如果这意味着什么,本地服务器是 MAC,两个遥控器是 Windows。

4

3 回答 3

2

因此,即使代码全部正确,错误实际上也出在 PHP 本身上。那里的 MIME 类型有拼写错误。当var_dump($_FILES)它吐出时["type"]=> string(14) "aplication/pdf"注意“应用程序”拼写错误。

检查了同事机器和他的正确性,所以可能是 php >5.3.5 的问题

于 2013-04-12T03:16:21.377 回答
0

由于某种原因,我在这里遇到了同样的问题,我无法上传 pdf 文件快速故障排除是显示错误

$msg = $this->upload->display_errors('<p>', '</p>');
echo $msg;

我收到了无效文件类型的错误消息,所以我添加了新的代码行来显示有关要上传的文件的完整信息。

$msg = $this->upload->display_errors('<p>', '</p>');
$msg.=print_r($this->upload->data());
echo $msg;

然后我将文件类型复制到 config/mime.php

'pdf'   =>  array('application/pdf'),

并确保使用相同的 mime 类型作为我上传文件的 mime 类型。有趣的是,错误在于 mime.php 中有一个错字:)

由于从互联网复制过去而没有注意使用的引号,因此使用撇号而不是单引号。

于 2013-11-08T18:07:54.163 回答
0

代替

$this->load->library('upload',$config);

尝试这个

$this->load->library('upload'); $this->upload->initialize($config);

这对我有用

于 2017-02-20T08:18:16.827 回答