gpt4 book ai didi

PHP:如何重命名使用 Zend_Form_Element_File 上传的文件?

转载 作者:IT王子 更新时间:2023-10-29 01:16:42 27 4
gpt4 key购买 nike

表格:

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

Controller :

//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();
}
}

问题:

  1. 当我调用 $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'];
  2. 如何将文件名重命名为我想要的名称?这可以用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com