2012-01-25 8 views
1

HTML5とPHPだけで複数のファイルをアップロードすることはできますか?私は、複数のファイルを選択してループに格納し、すべてのファイルを繰り返してサーバーにアップロードすることができればと思っていました。Codeigniter HTML5で複数のファイルをアップロードする場合は、Uploadifyなどのツールを使用できますか?

しかし、Codeigniterは最初に選択したファイルのみをアップロードします。

foreach ($_FILES as $key => $value) 
{ 
     $this->upload->do_upload($key['name']) 
} 

私がアップロードパスとファイル名のようなものを処理するための追加のロジックを持っていますが、そのコードは罰金ですが、このループは、最初の選択ファイルと他には何のために働くようです。

HTML5とPHPを使用できない場合は、単にUploadifyを使用するか、複数のファイルのアップロードをサポートするようにアップロードクラスを変更する方法がありますか?ここで

は私の方法だ多かれ少なかれ、

public function uploadScreens($id) { 
$this->load->library('upload'); 
$config['allowed_types'] = '*'; 
$config['max_size'] = '45000'; 
$config['max_width'] = '20000'; 
    $config['max_height'] = '15000'; 
foreach ($_FILES as $key => $value) 
    { 
    if (!empty($key['name'])) 
      { 
       $this->db->set('gameid', $id); 
     $this->db->insert('gamescreens'); 
       $screenid = $this->db->insert_id(); 

       $this->createDirectory($screenid); 
       $filename = $this->randomFilename(); 
       $config['file_name'] = "$filename"; 
       $config['upload_path'] = APPPATH . "../content/gamescreens/" . $screenid . '/'; 
       $this->upload->initialize($config); 

       if ($this->upload->do_upload($key['name'])) 
       { 
        $data = $this->upload->data(); 
        $sourceurl = $data["full_path"]; 
        $this->db->simple_query("update gamescreens set source = '$sourceurl' Where id=$screenid"); 
     } 
       else 
       { 
        //catch eerrors 
       } 
      } 
    } 

}

答えて

0

に知らせて、私は次のような問題を参照してください。

foreach ($_FILES as $key => $value) 
{ 
     $this->upload->do_upload($key['name']) 
} 

私は$value['name']ではなく、真であるべきと考えていますか?

0

これは、CodeIgniterの程度、共通の問題です。 CIで複数のファイルをアップロードするには、$this->upload->initialize($config);をループで呼び出す必要があります。

+0

私はこれまでのループでそれを持っていましたが、複数のファイルをアップロードすることはありません。私のメソッドでコードを更新しました。 – Bombcode

+0

$ _POST [name]は一意ですか? name_1、name_2、name_3 ... – arch

+0

私はそうは思わない、私は複数のファイルを選択するだけです。また、ビューに1つの入力タグがあります。 – Bombcode

1

私が知る限り、あなたはuploadifyを使うときにCIで複数のファイルを扱う必要はありません。 uploadifyは、ファイルごとにコントローラアクションを1回呼び出すことで、ファイル(アップロードキュー)を1つずつアップロードするためです。

私は10個の画像ファイル

/** 
* Upload Action. 
*/ 
public function upload() 
{ 
    $targetFolder = '/uploads'; // Relative to the root 

    if (!empty($_FILES)) { 


     // Validate the file type 
     $fileTypes = array('jpg','jpeg','gif','png'); // File extensions 
     $fileParts = pathinfo($_FILES['Filedata']['name']); 

     $tempFile = $_FILES['Filedata']['tmp_name']; 
     $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; 
     $targetName = uniqid() . '.' . $fileParts['extension']; 
     $targetFile = rtrim($targetPath,'/') . '/' . $targetName; 

     if (in_array($fileParts['extension'],$fileTypes)) { 
      move_uploaded_file($tempFile, $targetFile); 
      echo $targetName; 
     } else { 
      echo 'Invalid file type.'; 
     } 
    } 
} 

をアップロードするには、私のアップロードコントローラでこのアクションを使用しています、これは私のuploadifyクライアント側の設定

// create file uploader 
$('#file_upload').uploadify({ 
    'swf'  : '/swf/uploadify.swf', 
    'uploader' : YOUR_CONTROLLER + '/upload', 
    'uploadLimit' : 10, 
    'onUploadSuccess' : function(file, data, response) { 
     // do stuff where a file is uploaded 
    }, 
    'onQueueComplete' : function(data) { 
     // do stuff when queue done 
    } 
}); 

ですが、それがお役に立てば幸いです。

0

私はドン、複数のファイルに

をアップロードするuplodify使用しますが、私はhere

を使用してマルチアップロードライブラリ についてlitlle編集して、いくつかの問題here

を取得し、それは、複数のファイルをupploadすることができますが、私は知りません最後にアップロードされたファイルのデータファイルuppload

私はこれが役に立ちそうですOU、あなたはこの問題を解決できるかどうかは、私はあなたのコード例に基づいて

関連する問題