[英]how to name an uploaded file in zend framework
我有一個表單包含和形式的代碼就像這樣的圖像
$image->setDestination(APPLICATION_PATH . '/../public/images/upload');
在我的控制器中我有
if($countryForm->image->isUploaded())
{
$countryForm->image->receive();
$countryModel->addCountry(
$countryForm->getValue('name'),
$countryForm->getValue('description'),
$this->view->baseUrl('/images/upload/'.basename($countryForm->image->getFileName()))
);
}
如何更改上傳文件名。 我想把它設置為
random(100).time().ext
試試這段代碼
if($form->image->isUploaded()){
$upload = new Zend_File_Transfer();
$upload->addFilter('Rename', array('target' => APPLICATION_PATH.'/../images/upload/'.time().'.jpg', 'overwrite' => true));
$form->image->receive();
$filename = $form->image->getFilename();
$pageModel->addPage($form->getValue('pagetitle'),
$form->getValue('pagemetakeyword'),
$form->getValue('pagemetadescription'),
$form->getValue('pagecategory'),
$filename,
$form->getValue('pagecontent'),
$form->getValue('pagestatus')
);
}
仍會在我的數據庫中提供'backend / public / images / upload / picture.jpg'
我的表單中包含以下代碼
$image = $this->createElement('file', 'image');
$image->setLabel('Image: ');
$image->setRequired(FALSE);
$image->setDestination(APPLICATION_PATH . '/../public/images/upload/');
$image->addValidator('Count', false, 1);
$image->addValidator('Size', false, 1024000);
$image->addValidator('Extension', false, 'jpg,jpeg,png,gif');
$this->addElement($image);
我正在使用Ubuntu
在您的表單類中添加如下元素:
$fileDestination = realpath(APPLICATION_PATH.'/../images/upload/');
$this->addElement('file','cover', array(
'label' => 'Cover:',
'required' => false,
'destination' => $fileDestination,
'validators' => array(
array('Count', false, array(1)),
array('Size', false, array(1048576 * 5)),
array('Extension', false, array('jpg,png,gif')),
),
'decorators' => $this->_elementDecorator
));
在你的控制器:
$originalFilename = pathinfo($form->image->getFileName());
$newName = rand(1,100) . time() . $originalFilename['extension'];
$form->cover->addFilter('Rename', $newName);
$data = $form->getValues();
使用addFilter()
如果你包含文件名(這里你可以使用你的rand()函數)並將它添加到target
數組值,它將重命名它
來自文檔:
$upload = new Zend_File_Transfer();
// Set a new destination path
$upload->addFilter('Rename', 'C:\picture\uploads');
// Set a new destination path and overwrites existing files
$upload->addFilter('Rename', array('target' => 'C:\picture\uploads', 'overwrite' => true));
嘗試:
if($form->image->isUploaded()){
$upload = new Zend_File_Transfer();
$files = $upload->getFileInfo();
//You should also add file validation, see:
//http://framework.zend.com/manual/en/zend.file.transfer.introduction.html#zend.file.transfer.introduction.checking
$upload->addFilter('Rename', APPLICATION_PATH.'/../images/upload/'.time().'.jpg', $files[0]);
$upload->receive($files[0]);
$filename = $files[0]->getFilename();
$pageModel->addPage($form->getValue('pagetitle'),
$form->getValue('pagemetakeyword'),
$form->getValue('pagemetadescription'),
$form->getValue('pagecategory'),
$filename,
$form->getValue('pagecontent'),
$form->getValue('pagestatus')
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.