ZendFramework - Как загрузить несколько файлов, используя zend_http_client?

Как загрузить несколько файлов с помощью ->setFileUpload()?

Например, у меня есть это:

<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.

Это приводит к:

$_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
);

Дополнением к решениям выше является добавление ->setOptions(array('multiple' => 'multiple')) к элементу файла формы. Или просто атрибут множественного = "несколько" для вашего тега ввода HTML-формы.

Множественный является атрибутом HTML5 и позволяет одновременно выбирать несколько файлов вместо одного для каждого элемента файла.

Другие вопросы по тегам