上传文件:更改文件扩展名

时间:2014-09-04 09:49:29

标签: php symfony doctrine-orm

我实际上正在上传任何文件。首先,我尝试上传图片文件(.png,.jpg,...)并且它已经工作了!但是,当我尝试上传.ogv,.mov,.mp4等视频文件时,文件被上传,但文件的扩展名更改为.ogx,.ogv和.mp4,.qt为.mov。我不知道错误在哪里,因为代码来自Symfony网站。

这是我的代码:

 /**
 * @Assert\File(maxSize="6000000")
 */
public $file;

public function getWebPath()
{
    return null === $this->path ? null : $this->getUploadDir().'/'.$this->path;
}

protected function getUploadRootDir()
{
    // le chemin absolu du répertoire où les documents uploadés doivent être sauvegardés
   return __DIR__.'/../../../../web/'.$this->getUploadDir();
}

protected function getUploadDir()
{
    // on se débarrasse de « __DIR__ » afin de ne pas avoir de problème lorsqu'on affiche
    // le document/image dans la vue.
    return 'uploads/documents';
}

// propriété utilisé temporairement pour la suppression
private $filenameForRemove;

/**
 * @ORM\PrePersist()
 * @ORM\PreUpdate()
 */
public function preUpload()
{
    if (null !== $this->file) {
        $this->path = $this->file->guessExtension();
    }
}

/**
 * @ORM\PostPersist()
 * @ORM\PostUpdate()
 */
public function upload()
{
    if (null === $this->file) {
        return;
    }

    // vous devez lancer une exception ici si le fichier ne peut pas
    // être déplacé afin que l'entité ne soit pas persistée dans la
    // base de données comme le fait la méthode move() de UploadedFile
    $this->file->move($this->getUploadRootDir(), $this->id.'.'.$this->file->guessExtension());

    unset($this->file);
}

/**
 * @ORM\PreRemove()
 */
public function storeFilenameForRemove()
{
    $this->filenameForRemove = $this->getAbsolutePath();
}

/**
 * @ORM\PostRemove()
 */
public function removeUpload()
{
    if ($this->filenameForRemove) {
        unlink($this->filenameForRemove);
    }
}

public function getAbsolutePath()
{
    return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->id.'.'.$this->path;
}   

提前致谢!

扑克

0 个答案:

没有答案