6

私はたくさん検索していて、この問題に関する多くの質問を見つけましたが、残念ながら答えはどれも役に立ちませんでした.

PNG 画像をアップロードしようとしていますが、次のエラーが表示されます。

アップロードしようとしているファイル形式は許可されていません。

私は自分のコードを構築するためにこの CI ガイドに従っていました: http://codeigniter.com/user_guide/libraries/file_uploading.html

これが私が得たものです:

ファイルを閲覧する:

[..]
   <?= form_open_multipart() ?>
   <input type="file" name="userfile" size="20" />
   <br /><br />
   <input type="submit" value="upload" />
   <?= form_close() ?>
[..]

私のコントローラー:

    $config['upload_path']   = './uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size']      = '100';
    $config['max_width']     = '1024';
    $config['max_height']    = '768';


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

        $xx = array('upload_data' => $this->upload->data());
        $mimetype= $xx['upload_data']['file_type'];

        var_dump('Mime: ' . $mimetype);
        var_dump($_FILES);

        if ( !$this->upload->do_upload())
        {
            Notice::add($this->upload->display_errors(), 'error');
        }
        else
        {
            $data['upload_data'] = $this->upload->data();
        }

ご覧のとおり、私はvar_dumpMIME タイプを試していますが、結果は空です。

私が行うvar_dump($_FILES)と、すべてがうまくいくように見えます:

array(1) { ["userfile"]=> array(5) { ["name"]=> string(14) "imageofm.png" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(18) "/var/tmp/php5cDAZJ" ["error"]=> int(0) ["size"]=> int(358) } }

また、'png' => array('image/png', 'image/x-png'),私のconfig/mimes.php.

ただし、すべての画像で発生しました(他の拡張機能はまだ試していません)。

私はすべての助けの試みに感謝します。

4

7 に答える 7

4

config/mimes.php の CSV 配列に「text/plain」を $mimes 配列に追加します

于 2013-12-27T10:45:23.033 に答える
1
$this->load->library('upload');  

$this->upload->set_allowed_types('*'); 


class MY_Upload extends CI_Upload {  

    function is_allowed_filetype() {  

        if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types))  
        {  
            $this->set_error('upload_no_file_types');  
            return FALSE;  
        }  

        if (in_array("*", $this->allowed_types))  
        {  
            return TRUE;  
        }  

        $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe');  

        foreach ($this->allowed_types as $val)  
        {  
            $mime = $this->mimes_types(strtolower($val));  

            // Images get some additional checks  
            if (in_array($val, $image_types))  
            {  
                if (getimagesize($this->file_temp) === FALSE)  
                {  
                    return FALSE;  
                }  
            }  

            if (is_array($mime))  
            {  
                if (in_array($this->file_type, $mime, TRUE))  
                {  
                    return TRUE;  
                }  
            }  
            else  
            {  
                if ($mime == $this->file_type)  
                {  
                    return TRUE;  
                }  
            }  
        }  

        return FALSE;  

    }  

}  
于 2013-07-22T15:46:20.747 に答える
1

codeigniter 2.1.0 の system/libraries/upload.php を 2.1.2 バージョンの upload.php ライブラリに置き換えると、問題が解決します。お役に立てれば

于 2012-09-01T13:09:43.103 に答える
0

extension=php_fileinfo.dll別の解決策は、php.iniで有効にすることです

于 2013-04-10T09:51:14.313 に答える