Sonata 媒体包 - 按名称获取 pdf 文件或在更新时更改文件名

Posted

技术标签:

【中文标题】Sonata 媒体包 - 按名称获取 pdf 文件或在更新时更改文件名【英文标题】:Sonata media bundle - get pdf file by name or change filename on update 【发布时间】:2016-05-11 13:31:32 【问题描述】:

我目前使用 SonataAdminBundle 和 SonataMediaBundle。 我的媒体包文件有问题,因为我的 pdf 文件不是用它的名称保存的,而是用 md5 或其他格式保存的。

例如:

媒体表 id : 1 名称:iphone.pdf provider_reference:9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

我不想通过这个来获取我的 pdf:

9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

但有它的名字(iphone.pdf)。

我想知道是否可以:

按名称获取 pdf 文件?

用特定名称保存我的 pdf 文件?

【问题讨论】:

【参考方案1】:

在你的 Twig 中使用它,这样你就可以用它的名字下载它:

 path('sonata_media_download', 'id': (your media object here|sonata_urlsafeid)) 

为了不下载就看,我正在找那个,如果有什么我会回来的。

祝你好运!

【讨论】:

【参考方案2】:

如果你想在 php 代码中获取文件的公共 URL,你可以使用这样的东西(代码来自我的 Application\Sonata\MediaBundle\Helper\MediaHelper)

public function getPublicUrl(Media $media, $format = 'reference')

    if (!$media) 
        return '';
    

    /** @var ImageProvider $provider */
    $provider = $this->container->get($media->getProviderName());
    $format = $provider->getFormatName($media, $format);

    return $provider->generatePublicUrl($media, $format);

如果你需要twig中的链接,你可以在SonataMedia官方文档中找到特殊的助手(我忘记了助手的名字)。

【讨论】:

谢谢。但我需要通过 pdf 名称获取公共 url,而不是生成的 pdf 名称(如 9a0b7a35131e23f91666324562c52f08b7cb6604.pdf)。菲尔 生成的文件名是唯一的,源名不是,所以你不能创建路由/some/path/originName.pdf。如果您需要通过链接打开文档,您应该创建路由 /some/path/ docId / docName 并使用 docId 查找文件。 公共函数 someAction($id, $name) $repo = $this->getDoctrine()->getRepository('ApplicationSonataMediaBundle:Media'); $doc = $repo->find($id); if (null == $doc) throw $this->createNotFoundException('Документ не найден'); $helper = new UploadMediaHelper($this->container); $r = new BinaryFileResponse($this->get('kernel')->getRootDir() . '/../web' . $helper->getPublicUrl($doc)); $r->trustXSendfileTypeHeader();返回 $r;

以上是关于Sonata 媒体包 - 按名称获取 pdf 文件或在更新时更改文件名的主要内容,如果未能解决你的问题,请参考以下文章

Sonata 媒体包中的图像路径

Symfony Sonata 媒体包

奏鸣曲媒体包

集成 Sonata Media Bundle(媒体实体)和 Sonata Classiffication Bundle(标签实体)

Sonata 管理员/媒体冲突 (CRUDController)

uniapp文件管理 文件列表 获取媒体文件 图片视频音频文档压缩包文件并实现可删除文件 图片文件列表 视频文件列表 音频文件列表 获取内存卡图片视频音频pdf xlxs docx txt