3

我使用Ajax应用程序在Symfony2 Web 应用程序中上传文件。当我上传文件时,我将它们放在如下路径中:

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

我对这些文件的管理有很多麻烦。

Web目录中的所有文件是否可见/可搜索/可浏览?如果是,我应该使用哪个路径进行存储以使它们仅对注册用户可见?

我提出这个问题是因为这里用户Rook建议不要将文件存储在web root中。

4

2 回答 2

0

我所做的是为每次上传创建一个数据库条目

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
    ));

这种方法非常灵活,允许您创建一个可以适用于各种实体的上传模块。此外,由于上传已编入索引,通过搜索引擎的搜索效率更高(因为您可以添加描述、名称等元数据...)

于 2012-11-19T15:28:51.537 回答
0

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

我认为这是将上传的文件移动到非 Web 根文件夹中的好方法。

这个话题让我很感兴趣。

于 2012-11-19T15:10:07.890 回答