簡體   English   中英

如何在zend框架中命名上傳的文件

[英]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()

http://framework.zend.com/manual/1.12/en/zend.file.transfer.filters.html#zend.file.transfer.filters.usage

如果你包含文件名(這里你可以使用你的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM