2017-03-23 14 views
0

複数のファイルを一度にアップロードしたいと思います。 私はこのように私の形で使用します。CodeIgniter 3.1.3複数ファイルのアップロードエラーの処理

<input type="file" name="files[]" multiple/> 

問題がある、私は私のconfigディレクトリに適切なアップロードを行うために前に各ファイルを検証します。

誰かが15ファイルを一度にアップロードした場合、有効なサイズやタイプのファイルがありません....アップロードしたすべてのファイルを中止して、フォームにエラーを表示します。 Alは、私はファイルが有効であるかどうかを確認するために、これをしようとしたが、彼らはすでに私のフォルダファイルでアップロードを取得し、私はこのたくない良いですが、私は(ライブラリアップロードCodeIgniterの使用)最初のチェックを行うカント 考えて:

if ($_FILES['files']['name']['0'] != '') { 
    $config['upload_path'] = 'docs/'; 
    $config['allowed_types'] = 'jpg|jpeg|png|gif|pdf'; 
    $this->load->library('upload',$config); 
    foreach ($_FILES['files']['name'] as $key=>$value) { 
     $file_upload[$key] = array(
       'name'=>$_FILES['files']['name'][$key], 
       'type'=>$_FILES['files']['type'][$key], 
       'tmp_name'=>$_FILES['files']['tmp_name'][$key], 
       'error'=>$_FILES['files']['error'][$key], 
       'size'=>$_FILES['files']['size'][$key] 
      ); 
    } 
    $i = 0; 
    foreach ($file_upload as $key=>$file) { 
     $this->upload->initialize($config); 
     $_FILES['file' . $key] = $file_upload[$key]; 
     if(!$this->upload->do_upload('file' . $key)) { 
      if ($i == 0) { 
       $this->error['files_error'] = sprintf($this->upload->display_errors(),$_FILES['file' . $key]['name']); 
       $this->error['error_warning'] = $this->lang->line('error_warning_form'); 
      } else { 
       $this->error['files_error'] .= sprintf($this->upload->display_errors(),$_FILES['file' . $key]['name']); 
      } 
      $i++; 
     } 
    } 
} 

各ファイルを検証し、すべてのファイルが正常であれば、それを自分のフォルダにアップロードします

PS申し訳ありません任意の助けのための私の英語

感謝のために私は、私はクラスのアップロードを拡張することによってそれを解決

+0

アップロード時にエラーのスクリーンショットを表示することができますファイル? –

+0

ファイルが実際にアップロードされる場所には、常に一時フォルダがあります。このため、多くの人がクライアント側の検証を適用しています。 – qwertzman

+0

ファイルをアップロードしてもエラーにはなりません。私のフォームは大きいです。入力フィールドのいずれかのエラーがフォームにある場合、ユーザーにエラーが表示されます。アップロードするファイルを再度選択する必要があります。フォームを検証し、有効でない場合は、アップロードするファイルが正しいタイプであるかどうかをチェックする唯一の方法は、$ this-> upload-> do_upload()を使用することです。しかし、私がアップロードするファイルを確認するたびに、私は自分のファイルディレクトリfile.pdf、file1.pdf、file3.pdfなどを持っています。最後のファイルだけがデータベースに自分のフォームにリンクされます。その関数がファイルを移動するまでは、/ tmp /にあります。これにcodeigniterを使用する方法はありますか? –

答えて

0

を取得します。私はdo_upload_checkと呼ばれる新しい機能を使用すると私do_uploadからすべてのデータを使用するが、ファイルがアップロードされた/ tmp /から私のディレクトリにファイルが移動した最後の行を削除

関連する問題