被Symfony的文件上传文档困惑

时间:2013-04-16 14:36:10

标签: symfony doctrine-orm

last section of Symfony 2.1's file upload documentation提供有关如何使用文档的数据库id作为文件名的说明,重写getAbsolutePath()函数:

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

我很困惑。似乎path属性不再存储路径,而是扩展。这是怎么回事?

我正在尝试更改类以将上传内容放在uploads/YYYY/MM文件夹中,并且我不确定应该将其放在哪里。我倾向于将/YYYY/MM部分存储在path属性中,但似乎它似乎存储了扩展名。

1 个答案:

答案 0 :(得分:1)

为什么路径属性中的扩展名在代码块的顶部解释:

  

如果您想使用id作为文件的名称,则实现略有不同,因为您需要在路径属性下保存扩展名,而不是实际的文件名

至于放置uploads/YYYY/MM的位置 - 纯粹通过查看文档示例我假设它应该进入Document::getUploadRootDir()方法。

假设您在创建Document时跟踪存储createdAt字段,方法可能如下所示:

public function getUploadRootDir()
{
    return sprintf('uploads/%s/%s', $this->createdAt->format('y'), $this->createdAt->format('m'));
}