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

时间:2016-02-02 16:24:56

标签: symfony sonata-admin sonata sonata-media-bundle

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

例如:

  • 媒体表
  • id:1
  • name:iphone.pdf
  • provider_reference:9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

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

9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

但名称(iphone.pdf)。

我想知道是否可以:

  • 按名称获取pdf文件?

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

2 个答案:

答案 0 :(得分:3)

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

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

要查看它而不下载,我正在寻找它,如果我找到了什么,我会回来的。

祝你好运!

答案 1 :(得分:1)

如果你想在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);
}

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