Медиа-пакет Sonata - получить pdf-файл по имени или изменить имя файла при обновлении

В настоящее время я использую SonataAdminBundle и SonataMediaBundle.
У меня проблема с файлами мультимедийных пакетов, потому что мой pdf-файл сохраняется не с его именем, а с md5 или другим форматом.

Например:

  • мультимедийный стол
  • id : 1
  • имя: iphone.pdf
  • provider_reference: 9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

Я не хочу получать свой PDF-файл следующим образом:

9a0b7a35131e23f91666324562c52f08b7cb6604.pdf

но с его именем ( iphone.pdf ).

Я хочу знать, возможно ли:

  • получить файл PDF по имени?

or

  • сохранить мой PDF-файл под определенным именем?

person philou13010    schedule 02.02.2016    source источник


Ответы (2)


используйте это в своем Twig, чтобы вы могли загрузить его с его именем:

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

Чтобы увидеть это без скачивания, я ищу это, я вернусь, если что-то найду.

Удачи!

person Seddik Touzani    schedule 26.02.2016

Если вы хотите получить общедоступный URL-адрес для файла в PHP-коде, вы можете использовать что-то вроде этого (код из моего 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 (я забыл имя помощника).

person GFB    schedule 02.02.2016
comment
спасибо. но мне нужно получить общедоступный URL-адрес по имени PDF, а не сгенерированному имени PDF (например, 9a0b7a35131e23f91666324562c52f08b7cb6604.pdf). Фил - person philou13010; 03.02.2016
comment
Сгенерированное имя файла уникально, имя источника — нет, поэтому вы не можете создать маршрут /some/path/originName.pdf. Если вам нужно открыть документ по ссылке, вы должны создать маршрут /some/path/{{ docId }}/{{ docName }} и использовать docId для поиска файла. - person GFB; 14.02.2016
comment
public function 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; } - person GFB; 14.02.2016