- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
//excerpt
$file = new Zend_Form_Element_File('file');
$file->setLabel('File to upload:')
->setRequired(true)
->addValidator('NotEmpty')
->addValidator('Count', false, 1)
->setDestination(APPLICATION_UPLOADS_DIR);
$this->addElement($file);
//excerpt
if ($form->isValid($request->getPost()) {
$newFilename = 'foobar.txt';
//how should I rename the file?
//When should I rename the file? Before or after receiving?
try {
$form->file->receive();
echo 'filename: '. $form->file->getFileName();
}
}
当我调用 $form->file->getFileName()
时,它返回完整路径,而不仅仅是文件名。如何只输出文件名?
//Answer: First, get an array of the parts of the filename:
$pathparts = pathinfo($form->file->getFileName());
//then get the part that you want to use
$originalFilename = $pathparts['basename'];
如何将文件名重命名为我想要的名称?这可以用 Rename
过滤器来完成吗?我已经在表单中设置了目的地,所以我只想更改文件名。也许我不应该在表格中设置目的地?或者也许这不能用过滤器来完成。也许我应该用 PHP 函数来做这件事?我该怎么办?
//Answer: Use the rename filter:
$form->file->addFilter('Rename', 'new-file-name-goes-here.txt');
这就是我最终做的:
public function foobarAction()
{
//...etc...
if (!$form->isValid($request->getPost())) {
$this->view->form = $form;
return;
}
//the following will rename the file (I'm setting the upload dir in the form)
$originalFilename = pathinfo($form->file->getFileName());
$newFilename = 'file-' . uniqid() . '.' . $originalFilename['extension'];
$form->file->addFilter('Rename', $newFilename);
try {
$form->file->receive();
//upload complete!
$file = new Default_Model_File();
$file->setDisplayFilename($originalFilename['basename'])
->setActualFilename($newFilename)
->setMimeType($form->file->getMimeType())
->setDescription($form->description->getValue());
$file->save();
} catch (Exception $e) {
//error: file couldn't be received, or saved (one of the two)
}
}
最佳答案
使用 rename filter .
关于PHP:如何重命名使用 Zend_Form_Element_File 上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883876/
我使用 Zend Form 并上传文件。我需要为它重命名和用户 addFilter。但是,如果我尝试像代码中那样获取文件的扩展名,我会收到错误消息“文件太多,最多允许 '1',但给出了 '2'”。如果
我正在尝试从文件元素周围移除 dt 和 dd 装饰器。 通常我将 $element->setDecorators(array(array('ViewHelper'))); 应用于表单元素。 然而,这不
表格: //excerpt $file = new Zend_Form_Element_File('file'); $file->setLabel('File to upload:') ->s
我的表单中有以下元素: $attachment = new Zend_Form_Element_File('attachment'); $attachment->setLabel('Attach Fi
我有一个 Zend 表单,其中包含一个文件元素。 $this->addElement('file', 'image', array( 'label' => 'U
我有一个使用 Zend_Form_Element_File 的表单,它不是必填字段。 当我在 iPad 上提交表单时,它不会验证也不会生成任何错误消息。 我已将问题缩小到 Zend_Form_Elem
我想使用带有 HTML 属性 multiple 的 Zend_Form_Element_File 上传多张图片。设置元素的工作方式很直观: $form->addElement(new Zend_For
我正在使用 Zend_Form_Element_File 来验证某些文件属性。有问题的文件输入元素是动态创建的 - 即。它可以是形式,但不需要;但是,如果是,并且已经通过它提交了文件,则需要满足某些标
我是一名优秀的程序员,十分优秀!