Zend_Form_Element_File загрузка нескольких файлов и MySQL - PullRequest
0 голосов
/ 20 февраля 2012

Кто-нибудь знает рабочий пример для получения нескольких файлов, хранения их в папке и имен в таблице MySQL?Уже несколько дней без удачи, чего-то всегда не хватает, и, прежде чем задавать эти вопросы, ну, может, я найду правильный!

может быть?я учусь, используя Zend 1.11

спасибо Пабло

РЕДАКТИРОВАТЬ: я добавляю код для ясности: в форме:

$element = new Zend_Form_Element_File('images');
$element->setLabel('Upload bis 3 Bilder (máx. 200kb each):')
                ->setMultiFile(3)
                ->setValueDisabled(true)
                ->addValidator(new Zend_Validate_File_Size('2MB'))
                ->addValidator('Count', false, array('min'=>0,'max' => 3));

в контроллере:

$adapter = $form->images->getTransferAdapter();
//create directory where files would be hold
if (!file_exists(UPLOADDIR))
mkdir(UPLOADDIR, 0777, 1);

$i=0;
$images="";
//loop uploaded files

foreach ($adapter->getFileInfo() as $info)
{     
//rename file how you like and move it to given destination
$fileName = time().$i.'.'.$this->getExtension($info['name']);
$adapter->addFilter('Rename', array('target'=>UPLOADDIR.$fileName, 'overwrite'=>true));

//if something goes wrong print errors in screen
if (!$adapter->receive($info['name']))
{
die(print_r($adapter->getMessages(),1));
}else{
 if ($info['name']!==""){
 $images .= $fileName.",";
 }
}
$i++;
}                

1 Ответ

1 голос
/ 27 августа 2012

Я думаю, вы должны использовать setFilters() вместо addFilter на адаптере, потому что текущий код будет добавлять новый фильтр переименования на каждой итерации цикла foreach.

Попробуйте заменить:

$adapter->addFilter('Rename', array('target'=>UPLOADDIR.$fileName, 'overwrite'=>true));

на

$adapter->setFilters(array(new Zend_Filter_File_Rename(array('target'=>UPLOADDIR.$fileName, 'overwrite'=>true))));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...