我使用 Ajax 应用程序在 Symfony2 Web应用程序中上传文件。 当我上传文件时,我将它们放在如下路径中:
"%kernel.root_dir%/../web/bundles/acmehome/images/uploaded"
关于这些文件的管理,我遇到了很多麻烦。
web 目录中的所有文件是否可见/可搜索/可浏览? 如果是,我应该将哪条路径用于存储目的,以使它们仅对注册用户可见?
我提出此问题是因为here用户 Rook 建议不要将文件存储在网络根目录中。
答案 0 :(得分:0)
是的,在默认配置中,所有文件都是可见/可搜索/可浏览的。您可以通过目录中的.htaccess文件限制访问。
我认为这是将上传文件移到非网络根文件夹中的好方法。
这个话题对我很感兴趣。
答案 1 :(得分:0)
我要做的就是为每次上传创建一个数据库条目
1 - 我将文件上传到web / upload / [month] / [day]等文件夹(我用.htaccess保护上传文件夹)
2 - (我在上传期间创建了一个名为upload的学说实体)我创建了一个条目 名称, 描述, 文件路径, 文件扩展名, 所有者类型(我上传文件的实体), 所有者ID(实体ID)
3 - 最后,如果我将我的文件上传到“博客实体”(供应商\实体\博客)或评论实体(供应商\实体\评论),我将请求所有属于的文件。
$em = $this->getDoctrine()->getEntityManager();
$documents = $em->getRepository('VendorBundle:Upload')->findBy(array(
'ownerType' =>$entityName,
'ownerId' =>$id
));
这种方法非常灵活,允许您创建可以在各种实体上运行的上传模块。 此外,由于上传已编入索引,因此搜索引擎搜索效率更高(因为您可以添加描述,名称等元数据)。