zend改php的文件名,PHP:如何重命名用Zend_Form_Element_File上传的文件?

形成:

//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'];

>如何重命名文件名到我想要的东西?这可以用重命名过滤器吗?我已经在窗体中设置目标,所以我想要做的是更改文件名。也许我不应该在窗体中设置目的地?或者也许这不能用一个过滤器。也许我应该用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)

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值