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