2012-02-11 14 views
1

- > setFileUpload()で複数のファイルをアップロードするにはどうすればよいですか?ZendFramework - zend_http_clientを使って複数のファイルをアップロードするには?

たとえば私はこれを持っている:

<form method="post" 
     action="/file/csvupload" 
     target="myadmin_b20301" 
     enctype="multipart/form-data"> 
    <input type="text" name="test" id="test" value=""> 
    <input type="file" name="file[]" id="attachment" class="attachment"> 
    <input type="file" name="file[]" id="attachment" class="attachment"> 
    <input type="file" name="file[]" id="attachment" class="attachment"> 
    <input type="submit" name="submit" id="submit" value="Update">    
</form> 

PHP:(メインアップロード後に、それは別のポストで管理パネルにプッシュ)。

.... 
if (!$upload->isValid()) // /file/csvupload 
{ 
.... 
    $client = new Zend_Http_Client(); // upload now to administrator another copy 
    $client->setUri($uri); 
    $client->setParameterPost(array('test'=>'test'); 
    //how do i tell here to use those same file[] which are multiple? 
    $client->setFileUpload('/tmp/Backup.tar.gz', 'bufile');  
    $client->request(); 

答えて

2

あなたはちょうどあなたがアップロードしたいファイルごとに一回setFileUpload()を呼び出すことができます。各呼び出しは、アップロードされるファイルの配列にファイルを追加します。

あなたは、このようにコードを変更し、同じファイル要素にファイルの配列をアップロードしたい場合:

$client->setFileUpload('/tmp/Backup.tar.gz', 'bufile[]'); 
$client->setFileUpload('/tmp/DB.Backup.tar.gz', 'bufile[]'); 

はちょうどあなたがHTMLの場合と同様に、ファイル名の配列ブラケット表記を使用してください。

これは、その結果:上記の解決策に加えてあなたのフォームファイル要素に->setOptions(array('multiple' => 'multiple'))を追加することです

$_FILES = array(
    'name' => array(
     0 => 'Backup.tar.gz', 
     1 => 'DB.Backup.tar.gz', 
    ), 
    'tmp_name' => array(
     0 => '/tmp/php63832' // Backup.tar.gz 
     1 => '/tmp/php33248' // DB.Backup.tar.gz 
    ), 
    // etc 
); 
2

。または、HTMLフォーム入力タグの属性multiple = "multiple"だけです。

複数はHTML5属性であり、ファイル要素ごとに1つではなく複数のファイルを一度に選択できます。

関連する問題