2012-11-19 19 views
3

我使用阿贾克斯应用程序在Symfony2的 Web应用程序上传文件。 当我上传的文件,我把它们放在一个路径,如:使用Symfony2进行文件上传的安全性:在哪里安全地存储它们?

"%kernel.root_dir%/../web/bundles/acmehome/images/uploaded" 

我有一个关于这些文件的管理很多麻烦。

web目录中的所有文件是否可见/可搜索/可浏览? 如果是,我应该使用哪条路径用于存储目的,以便仅为注册用户显示它们?

我提出这个问题,因为here用户鲁克建议不要把文件存储在Web根

回答

0

是的,在默认配置下,所有的文件都可见/搜索/浏览。您可以通过目录中的.htaccess文件限制访问。

我认为这是一个不Web根文件夹移动上传文件的一个好办法。

本主题吸引了我很多。

+0

一个应该在哪里将上传的文件? – JeanValjean

0

我做了什么来管理是创建每个数据库条目上传

1 - 我上传文件到如Web /上传/ [月]文件夹/ [日](我保护上传文件夹的.htaccess )

2 - (我创建的)上载我创建 名, 描述, 文件路径, 文件扩展名, 所有者类型(在这里我上传文件的实体)一进入期间调用上传学说实体, 所有者ID(实体ID)

3 - 最后,如果我上传我的文件上的“博客实体”(供应商\实体\博客),或在评论实体(供应商\实体\评论),我会要求所有的文件属于。

$em = $this->getDoctrine()->getEntityManager(); 
     $documents = $em->getRepository('VendorBundle:Upload')->findBy(array(
     'ownerType' =>$entityName, 
     'ownerId' =>$id 
    )); 

这种方法非常灵活,允许您创建一个可以在每种实体上运行的上传模块。 更多了,因为上传的索引,通过搜索引擎的搜索效率要高得多(因为你可以像描述,名称添加元数据,...)

+0

那么,我的问题更多地涉及“存储文件的位置”而不是“哪个模型用来存储它们”。关于定义子目录,我不知道是否有这样的优势。阅读[那Q/A](http://stackoverflow.com/questions/12178171/user-files-organization-in-a-web-server)。 – JeanValjean

+0

与上传文件的真正问题是展现给它存储在服务器上的用户,因为如果它是一个脚本的事情,他们必须从URL调用它来执行它。 – Chopchop

+0

但我不会把它放在web/bundle中,因为它通常是我们存储东西的地方(根据doc)。我宁愿选择web/upload/random() – Chopchop