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
属性中,但似乎它似乎存储了扩展名。
答案 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'));
}