1

ユーザーがプロフィール写真を変更できるようにするために、CodeIgniter でアップロード フォームを作成しようとしています。私のコントローラーには、次のコード行があります。

if(!$this->upload->do_upload() && empty($_FILES['userfile'])) {
    $data['upload'] = "0";
    $this->load->view('editpicture', $data);
} elseif (!$this->upload->do_upload() && !empty($_FILES['userfile'])) {
    $data['upload'] = "0";
    $data['attempt'] = "1";
    $data['error'] = $this->upload->display_errors();
    $this->load->view('editpicture', $data);        
} else {
    $upload_data = $this->upload->data();
    ....

エラーが発生した場合を除いて、すべて正常に動作します。ビューには同じエラーが 2 回表示されます。

アップロードするファイルが選択されていません。
アップロードするファイルが選択されていません。

4

1 に答える 1

1

これを行う:

if(!$this->upload->do_upload()) {
    if (empty($_FILES['userfile'])) {
        $data['upload'] = "0";
        $this->load->view('editpicture', $data);
    } else {
        $data['upload'] = "0";
        $data['attempt'] = "1";
        $data['error'] = $this->upload->display_errors();
        $this->load->view('editpicture', $data);       
    }
} else {
    $upload_data = $this->upload->data();
    ....

それが起こっている理由は、あなたが$this->upload->do_upload()2回走っているからです。最初の条件はそれを実行して、それが空であるかどうかFALSEを確認し、次に$_FILESコード ブロックを実行するために空かどうかをチェックします。

$this->upload->do_upload()TRUE で空の場合は実行されますが、空でない$_FILES場合は、条件で再度$_FILES実行する次の条件が実行されます。$this->upload->do_upload()その関数はif()2 回実行されています。条件チェックは左から右に実行されます。

于 2013-04-05T10:18:48.063 に答える