【问题标题】:Symfony VichUploaderBundle autowiring on DownloadHandler in a controllerSymfony VichUploaderBundle 在控制器中的 DownloadHandler 上自动装配
【发布时间】:2019-06-16 18:17:44
【问题描述】:

我正在使用带有 VichUploaderBundle 1.9 的 Symfony 4,我很难在我的控制器中注入 DownloadHandler 服务以便将文件发送到客户端。

我还使用HashidsBundle 将我的实体ID 转换为我的URL 中的jFaJ 之类的东西。

正如VichUploaderBundle documentation 中所述,我将服务注入到我的控制器中,如下所示:

    public function download(Wallpaper $wallpaper, DownloadHandler $downloadHandler)
    {
        return $downloadHandler->downloadObject($wallpaper->getMedia(), 'uploadedFile');
    }

这是我遇到的错误:

参数 2 传递给 App\Controller\WallpapersController::download() 必须是 Vich\UploaderBundle\Handler\DownloadHandler 的实例, 给定整数,调用 /mnt/c/Users/user/Documents/Dev/symfony/vendor/symfony/http-kernel/HttpKernel.php 在第 151 行

我还尝试通过在我的控制器中添加以下行来手动调用该服务: $this->get('vich_uploader.download_handler');

但是还是不行,我现在有这个错误:

Service "vich_uploader.download_handler" not found:即使它存在于应用程序的容器中,但 "App\Controller\WallpapersController" 内的容器是一个较小的服务定位器,只知道 "doctrine"、"form.factory" 、“http_kernel”、“parameter_bag”、“request_stack”、“router”、“security.authorization_checker”、“security.csrf.token_manager”、“security.token_storage”、“serializer”、“session”和“twig”服务。尝试使用依赖注入。

【问题讨论】:

    标签: symfony vichuploaderbundle hashids


    【解决方案1】:

    您可以使用 BinaryFileResponse 返回文件。

        public function download(Wallpaper $wallpaper): BinaryFileResponse
        {
            $file = new BinaryFileResponse($wallpaper->getMedia());
            return $file;
        }
    

    如需更多信息,请查看 https://github.com/aythanztdev/prbtcnccd/blob/master/src/Controller/MediaObject/ShowMediaObjectAction.php

    【讨论】:

    • 谢谢,但这只是一种解决方法。问题是 Symfony 无法正确地自动装配 DownloadHandler 服务。无论如何,我注意到问题可能来自 HashidsBundle(我在写问题时忘记提及),我在他们的 GitHub 存储库上打开了一个问题。其中一位维护人员目前正在调查它,如果有的话,我会在那里发布修复程序。 github.com/roukmoute/HashidsBundle/issues/8
    • 原来这是我正在使用的另一个库(HashidsBundle)的错误。 github.com/roukmoute/HashidsBundle/issues/8
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 2022-08-24
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 2023-03-16
    • 2019-07-15
    相关资源
    最近更新 更多