php - 如何在 zend 框架中命名上传的文件

标签 php zend-framework

我有一个表格,其中包含图像的代码如下所示

$image->setDestination(APPLICATION_PATH . '/../public/images/upload'); 

在我的 Controller 中有

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
));

在你的 Controller 中:

$originalFilename = pathinfo($form->image->getFileName());
$newName = rand(1,100) . time() . $originalFilename['extension'];
$form->cover->addFilter('Rename', $newName);
$data = $form->getValues();

关于php - 如何在 zend 框架中命名上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358154/

相关文章:

php - 从 PHP 执行 root 命令...有安全的方法吗?

php - 使用 PHP 衡量(和改进)性能的最佳方法?

php - Logcat 显示解析错误 : syntax error, 意外 ':' in C :\wamp\www\signup. php 第 2 行。使用 php 和 mysql 登录和注册表单

javascript - Ajax POST 永远不会被发送?

php - Zend Validate - 如何从不同的子表单传递上下文值?

php - 在没有 PHP 框架的情况下,如何以 MVC 模式编写 Controller ?

php - mySQL中如何将一批数据添加到一批数据中?

php - Zend 表单 : How to pass parameters into the constructor?

php - 如何从 zend 框架获取 $_GET 对象

php - 使用 Zend_Db 将 php boolean 值插入 mysql 位列