Symfony2 KnpLabsGaufrette -获取每个分支的本地文件系统(可下载文件)


Symfony2 KnpLabsGaufrette - Get local filesystem per twig (downloadable files)

我正在使用config.yml.

knp_gaufrette:
    adapters:
       uploaded_files:
            local:
                directory: "%kernel.root_dir%/../web/uploads"
                create: true
    filesystems:
        uploaded_files:
            adapter:    uploaded_files
            alias:      uploaded_files

现在我想访问每个树枝上传的文件。同样的例子:

<a href="{{ path('gaufrette_download', {system: 'uploaded_files', file: 'test.txt'}) }}>{{ 'Download' | trans }}</a>

文件的路径应该是…

http://localhost/web/uploads/test.txt

我想直接访问文件。无控制器(动作)。

这可能吗?什么好主意吗?

如果你的文件夹是网络可访问的(即你可以在你的地址栏中输入url http://localhost/web/uploads/test.txt并下载文件),你所要做的就是将路由gaufrette_download映射到该路径。您的包的routing.yml可能看起来像这样(注意缺少的defaults: { controller: ... }):

gaufrette_download:
    path: /web/uploads/{file}

如果你的.htaccess定义正确,你的web服务器应该为文件服务,而不是访问你的应用程序。你可能需要添加file的要求,例如允许斜杠(搜索symfony cookbook)

如果你只是不想写控制器(动作),你也可以创建一个事件监听器,当你的请求匹配路由时触发。