Как мне сделать, щелкнув ссылку скачать изображение? - PullRequest
0 голосов
/ 28 августа 2018

Я искал вокруг, и я нашел что-то, что по какой-то причине работает для некоторых ссылок, но когда я пытаюсь загрузить свое изображение, он просто открывает страницу с изображением

<a href="https://i.imgur.com/KBUpwNd.jpg" download="V2Map">Download</a>

Я ожидаю, что это загрузит изображение imgur, которое я связал, но вместо этого он просто открывает ссылку, есть идеи, как это исправить?

Ответы [ 3 ]

0 голосов
/ 28 августа 2018

Я только что сделал быстрое тестирование, и похоже, что домен происхождения в этом случае имеет значение.

Атрибут загрузки работает нормально, если изображение находится в том же домене . В противном случае он открывает ссылку.

  • Этот атрибут работает только для URL-адресов одного и того же происхождения.
  • Хотя URL-адреса HTTP (s) должны быть одного происхождения, BLOB-объекты: URL-адреса и данные: URL-адреса разрешены, чтобы можно было загружать содержимое, создаваемое JavaScript, например изображения, созданные в веб-приложении для редактирования изображений.
  • Если заголовок HTTP Content-Disposition: дает другое имя файла, чем этот атрибут, заголовок HTTP имеет приоритет над этим атрибутом.
  • Если для Content-Disposition: установлено значение inline, Firefox отдает приоритет Content-Disposition, как регистр имени файла, в то время как Chrome устанавливает приоритет для атрибута загрузки.
0 голосов
/ 28 августа 2018

В соответствии с MDN описанием атрибута download:

Этот атрибут работает только для URL-адресов одного и того же происхождения.

Так что он не будет работать с URL-адресом, который указывает на домен, отличный от вашего собственного, например i.imgur.com.

Вы можете использовать прокси-скрипт на своем собственном сервере, например:

<a href="/image_download.php?url=https://i.imgur.com/KBUpwNd.jpg" download="V2Map">Download</a>

Затем напишите скрипт image_download.php, который выполняет:

readfile($_GET['url']);

Вы, конечно, должны иметь проверочные проверки в сценарии, чтобы он не использовался как прокси общего назначения третьими лицами. Google "php proxy", и вы найдете несколько предварительно написанных сценариев.

0 голосов
/ 28 августа 2018

Атрибут download работает только для тех же исходных URL. Вы можете написать скрипт на стороне сервера.

OR Взгляните на это обсуждение для быстрого обхода.

Просто вставьте свой URL-адрес в downloadResource() следующим образом: downloadResource('https://i.imgur.com/KBUpwNd.jpg'); Оберните в script теги и запустите в своем браузере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...