2012-10-09 52 views
2

我不明白Gaufrette和symfony2。如何存储图像?

This在我看来,它只是为textfiles/textcontent工作。 我可以创建一个文件,但不能从本地源(即路径)复制。

我想什么做的是这样的:

$adapter = new LocalAdapter($realpath); 
$filesystem = new Filesystem($adapter); 
$filesystem->fromUploadedFile($tempPathOfUploadedFile,$idForGaufrette); 

如何存储图像,如何处理它当用户请求的输出?

更新:

  • 我如何可以访问symfony的上传文件“的临时文件名
  • 我如何可以访问现有的私有属性$存在在Symfony\Component\HttpFoundation\File\UploadedFile对象路径Symfony2的?

回答

3

方法copy(x, y)未实现,但如果你想存储文件,你可以使用方法 移动它10 在Filesystem Class中定义。

为了在用户请求时处理输出,您只需要链接到图像路径(probaly在数据库中)。所以你不需要文件系统(你可以用has($key)方法检查文件是否存在)。

在所有情况下,使用适配器Local在本地工作。

如果您需要像“ftp:// mydomain/myPicture”这样的流包装器,我最近发送了一个PR来配置config.yml中的流包装器,并注册您需要的filiesystems及其域。

+0

我想你让我错了。我搜索的是一个解决方案,在从请求接收到文件后不必将文件实际存储到某个位置,然后将其存储到gaufrette适配器。 –

+1

但@AndreschSerj,当你从一个表单中接收到一个文件“PHP”,它将文件存储在“tmp/bigKey”中时,你可以用另一个文件系统如亚马逊,ftp等将文件写入该文件中...... 但是, t想要存放文件或移动文件,在这个文件中你想用GAUFRETTE做什么操作? –

+0

好吧,这里我的问题似乎更关注于symfony。我想访问临时存储的文件,然后把它放在Gaufrette上,而不用绕道。我如何获得“tmp/bigKey”路径? –

2

要得到TMP文件名:

$file->getPathName(); // /tmp/filename 

其中$文件是一个Symfony\Component\HttpFoundation\File\UploadedFile对象。