1

こんにちは、私は約 3 か月間ウェブサイトを構築してきましたが、今日はガールフレンドにテスト目的でダミー コンテンツを入力してもらいました。そこで彼女は喜んでファイルのテストとアップロードを行っていましたが、突然、約 8 つの記事を作成した後、アップロード者がコードなどを変更することなく、ファイル タイプが許可されていないと言ってアップロードを拒否し始めることにしました。

言うまでもなく、これを介して1か月以上画像をアップロードしていますが、この問題が発生したのはこれが初めてです. さらに混乱を招くのは、同じ MIME パラメータを持つ他のセクションで CI アップロード クラスを使用していて、正常に動作することです! $_FILES で MIME を確認しましたが、これは image/jpg または image/png などであり、これらはすべて CI によって認識されます。CI 2.1.0 のバグについても確認しましたが、エラーが以前に発生したアップロード ライブラリ内のコードがわずかに異なるため、バグが修正された (または修正されなかった) と想定している 2.1.1 を使用しています。

いずれにせよ、許可されたタイプの構成パラメーターを * に設定すると正常に動作するため、MIME エラーであると推測します! もちろん、潜在的なセキュリティ侵害は驚異的であるため、これは理想に近いとは言えません。他にやるべき仕事があるので、私は今、これで危機に瀕しています。私が明らかに愚かなことをしている場合に備えて、このアップロードを処理するコードの一部を添付しましたが、そうでなければ、他の誰かがどこからともなくこの問題を開発した場合は、回避策/解決策を知りたいです......また、これがどうやって醜い頭を育てただけなのかは素晴らしいでしょう。私はしばしば、これらのことの謎に悩まされます。

if(isset($_FILES['article_main_image']) && $_FILES['article_main_image']['size'] > 0){

    $filename = $this->input->post('article_title') . '_' . time();

    $config['upload_path'] = './resource/data/tmpstore/';
    $config['allowed_types'] = 'gif|jpg|png|jpeg';
    $config['file_name'] = $filename;

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


    if ($this->upload->do_upload('article_main_image'))
    {

        $uploadData = $this->upload->data();
        $filename = $uploadData['file_name'];

        //Other stuff here

    } else {

       $this->session->set_flashdata('validationErrors', $this->upload->display_errors());
       $this->session->set_flashdata('postVars', $this->input->post());

       redirect('/admin/contenteditor/editarticle?id=' . $this->input->post('articleId'));
    }
}
4

1 に答える 1

0

を使用してアップロード データ配列をデバッグしてみてくださいprint_r($uploadData);file_typeおそらく、彼女がアップロードしようとしている画像の MIME タイプが正しくない可能性があります。

于 2012-10-07T01:47:52.817 に答える