Я ссылаюсь на http://samsonasik.wordpress.com/2012/08/31/zend-framework-2-creating-upload-form-file-validation/ и следую за этим, я могу загрузить 1 файл успешно, используя фильтр переименования в ZF2.zf2 Как загрузить файлы, более 1 файла
Однако, когда я использую этот способ для загрузки 2 файлов, он идет не так. Я вставляю свой код следующим образом:
$this->add(array(
'name' => 'bigpicture',
'attributes' => array(
'type' => 'file'
),
'options' => array(
'label' => 'Big Pic'
)
));
$this->add(array(
'name' => 'smallpicture',
'attributes' => array(
'type' => 'file'
),
'options' => array(
'label' => 'Small Pic'
)
));
<div class="row"><?php echo $this->formRow($form->get('smallpicture')) ?></div>
<div class="row"><?php echo $this->formRow($form->get('bigpicture')) ?></div>
$data = array_merge(
$request->getPost()->toArray(),
$request->getFiles()->toArray()
);
$form->setData($data);
if ($form->isValid()) {
$product->exchangeArray($form->getData());
$picid = $this->getProductTable()->saveProduct($product);
$pathstr = $this->md5path($picid);
$this->folder('public/images/product/'.$pathstr);
//move_uploaded_file($data['smallpicture']['tmp_name'], 'public/images/product/'.$pathstr.'/'.$picid.'_small.jpg');
//move_uploaded_file($data['bigpicture']['tmp_name'], 'public/images/product/'.$pathstr.'/'.$picid.'_big.jpg');
$fileadaptersmall = new \Zend\File\Transfer\Adapter\Http();
$fileadaptersmall->addFilter('File\Rename',array(
'source' => $data['smallpicture']['tmp_name'],
'target' => 'public/images/product/'.$pathstr.'/'.$picid.'_small.jpg',
'overwrite' => true
));
$fileadaptersmall->receive();
$fileadapterbig = new \Zend\File\Transfer\Adapter\Http();
$fileadapterbig->addFilter('File\Rename',array(
'source' => $data['bigpicture']['tmp_name'],
'target' => 'public/images/product/'.$pathstr.'/'.$picid.'_big.jpg',
'overwrite' => true
));
$fileadapterbig->receive();
}
приведенные выше формы, вид, действие. используя этот способ, только маленькая картинка uploaed успешно. большая картина идет не так. предупреждение мелькали, как в следующем:
Внимание: move_uploaded_file (C: \ WINDOWS \ TMP \ small.jpg): не удалось открыть поток: недопустимый аргумент в E: \ MyProject \ поставщика \ ZendFramework \ ZendFramework \ библиотека \ Зенд \ файл \ перенос \ адаптер \ http.php на линии 173
Предупреждение: move_uploaded_file(): Не удается переместить 'C: \ WINDOWS \ TMP \ php76.tmp' в «C: \ WINDOWS \ TEMP \ big.jpg 'в E: \ myproject \ vendor \ zendframework \ zendframework \ library \ zend \ file \ transfer \ adapter \ http.php в строке 173
Кто может сказать мне, как загрузить более 1 файла таким образом. вы знаете, способ переименования, аналогичный описанному выше. Благодарю.
Спасибо Stephan Grobler! Извините, я до сих пор не знаю, как его улучшить. Я добавляю if ($ fileadaptersmall-> isUploaded()) и if ($ fileadapterbig-> isUploaded()) вне $ fileadatpersmall/big -> receive(); все же, только маленькая фотография загружена. –