Media entity download solves a content management issue when dealing with files and media. Media entity download will prevent links from breaking when updating or uploading new files.
- Content editors create media with a file
- They want users to be able to download pdfs as links from content or blocks or paragraph items with WYSIWYGs, etc
- They use the file path on the system, because thats what they're used to doing (/sites/default/files/foo/bar/document.pdf)
- Later, they upload an updated file or a new file altogether
- The file path / url changes
- Now all existing links they created are broken in menus, WYSIWYGs, etc.
- Someone now has to go back through and update dozens or potentially hundreds of broken links
By linking to the media/{media_id}/download route, none of the above really matters. Linking content to media/{media_id}/download will always fetch and return the right file without worrying that its the incorrect one, or outdated, or a unique url (document_0.pdf).
A field formatter is included ("Download Link") for Views based usage, or for when the media item itself is viewed (i.e. /media/{id}).
LinkIt is supported.
Creating a url in code is easy, you just need a media entity id. You can also optionally specify a delta value if the file field contains multiple values:
<?php
$url = Url::fromRoute(
'media_entity_download.download',
[
'media' => $media_id,
],
[
'query' => [
'delta' => $delta,
],
]
);
?>
Versions
- 8.x-2.x - Compatible with Drupal 8.4.x to 10.3, requires Media module from Core
- 8.x-1.x - Compatible with Drupal 8.3.x and below, requires Media Entity module from Contrib
Contrib Support (8.x-1.x)
- Media Entity 8.x-1.x
- Media Entity Document 8.x-1.x
- LinkIt 8.x-5.x