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

Как загрузить несколько файлов с помощью -> 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 ]

2 голосов
/ 14 ноября 2012

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

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

2 голосов
/ 12 февраля 2012

Вы можете просто позвонить 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
);
...