I've got a question about renaming a file after it's been uploaded in Zend. I don't know where to put the Rename Filter. Here's what I've got. I've tried moving things around, but I'm lost. Currently it does upload the file to my photos folder, but it doesn't rename it. Thanks for any help!
if($this->_request->isPost())
{
$formData = $this->_request->getPost();
if ($form->isValid($formData))
{
$adapter = new Zend_File_Transfer_Adapter_Http();
$adapter->setDestination(WWW_ROOT . '/photos');
$photo = $adapter->getFileInfo('Photo');
$adapter->addFilter('Rename', array(
$photo['Photo']['tmp_name'],
WWW_ROOT . '/photos/' . $this->memberId . '.jpg',
true
));
if ($adapter->receive())
{
echo 'renamed';
}
}
}
I had to intercept the $_FILES and make the change before making the call to the adapter
Im sure there is a better way and I dont know why the filter doesn't work I have tried everything to get it to work. I had a deadline and so the above code went production LOL
Hope it helps someone
Eric
I managed to do that by setting a filter. Note that I did not set a destination path.
According to the documentation, you should not put the path in the destination
link text
there is a better and more secure way with zend framework ...
create helper class to retrieve file extension . .
class ImageUpload {
}
in controller :
class ProfileController extends Zend_Controller_Action { function indexAction() { $this->view->title = "Profile"; $this->view->bodyCopy = "
Please fill out this form.
";when your form should be :
}
Have fun
Actually, there is an even easier way to do this. All you need to do is pass false as the second parameter for the getFileName method of the Zend_File_Transfer_Adapter_Http object. Then you can rename the file by appending a userID to it or parse the file name to get the extension out if you like as well.