如何使用 - > 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( );
答案 0 :(得分: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
);
答案 1 :(得分:2)
上述解决方案的一个补充是将->setOptions(array('multiple' => 'multiple'))
添加到表单文件元素中。或者只是HTML表单输入标记的属性multiple =“multiple”。
Multiple是HTML5属性,允许一次选择多个文件,而不是每个文件元素选择一个。