Ссылка для скачивания
Иногда передо мной стоит задача сделать ссылку, которая должна открывать системный диалог для сохранения файла. Браузеры достаточно умны, чтобы открывать такой диалог при скачивании бинарников вроде архивов или EXE-файлов. Но что делать, если я хочу скачивать картинки или какие-нибудь видео? Именно скачивать, не открывать для просмотра.
Заголовок Content-Disposition Скопировать ссылку
Самый правильный способ попросить браузер скачать файл — добавить на стороне сервера заголовок Content-Disposition к потоку с файлом.
Content-Disposition: attachment; filename=kitten.jpg
Когда браузер видит у заголовка значение attachment , то пытается скачать файл.
Но иногда у вас просто нет возможности настроить сервер под свои нужды и добавить ещё один mod_rewrite . Нужен какой-то более браузерный способ решить задачу.
Атрибут download Скопировать ссылку
Самый простой способ — добавить атрибут download к ссылке.
Если вы добавите его просто так, без значения, браузер постарается получить имя файла либо из заголовка Content-Disposition (опять он, и у него довольно высокий приоритет), либо из пути файла.
Но вы можете задать значение атрибуту download , и тогда это значение станет именем скачиваемого файла. Это может быть полезно, если у ваших файлов какие-нибудь странные автогенерируемые урлы вроде https://cdn/images/a1H5-st42-Av1f-rUles .
Важно! Вся эта магия атрибутов не для ссылок с других доменов (cross-origin). Вы не можете управлять чужими ресурсами из соображений безопасности.
И помните, что IE и старые Safari не понимают атрибут download . Проверьте в Can I use….
blob: и data: Скопировать ссылку
Полезный лайфхак, чтобы помочь вашим пользователям сохранять картинки котиков в удобном для них формате. Если вы на своём сайте используете картинки в форматах AVIF или WebP, есть очень высокая вероятность, что ни один пользователь не сможет сохранить их к себе на компьютер или смартфон, чтобы потом пересмотреть. Точнее, сохранить-то смогут, а вот посмотреть вне браузера не смогут. Печаль.
Чтобы помочь пользователям, используйте data: или blob: внутри атрибута href .
Шаг 1. Нарисуйте картинку на Canvas Скопировать ссылку
const canvas = document.getElementById('canvas'); const context = canvas.getContext('2d'); const image = new Image(); image.onload = function () < context.drawImage(image, 0, 0); // TODO: всю магию намазывать сюда >; image.src = 'kitten-170.avif';
Шаг 2а. Сохранить картинку как блоб в атрибут href ссылки Скопировать ссылку
const blobLink = document.getElementById('blob-link'); canvas.toBlob(blob => < const blobUrl = URL.createObjectURL(blob); blobLink.href = blobUrl; >, 'image/jpeg', 0.9);
Да-да, я могу сохранить AVIF как JPEG. Классно, правда? Пользователь скачал всего 4 КБ AVIF с сервера, а получил 13 КБ JPEG на клиенте!
Шаг 2б. Сохранить картинку как data в атрибут href ссылки. Скопировать ссылку
Некоторые браузеры не умеют работать с блобами, поэтому вы можете помочь им при помощи data-урлов.
const dataLink = document.getElementById('data-link'); dataLink.href = canvas.toDataURL('image/jpeg', 0.9);
Так даже проще, но такой подход хуже по производительности.
Можете поиграть с полным демо тут:
Источники Скопировать ссылку
- Wiki: Content-Disposition
- MDN: The Anchor element
- MDN: canvas.toDataURL
- MDN: canvas.toBlob
Скачивание файлов из Интернета с использованием Python
В современном мире часто возникает необходимость скачивания файлов из интернета. Существует множество инструментов и библиотек, которые позволяют это делать, однако они могут быть сложными для новичков и тех, кто только начинает изучать язык Python. В этой статье будет показан простой и эффективный способ скачивания файлов из Интернета с использованием Python.
Допустим, существует задача скачивания mp3-файла с некоторого сайта. Это может быть необходимо для создания подкаста или сбора музыкальной коллекции. Обычно такие задачи решаются с помощью специализированных утилит, однако они могут быть неудобными в использовании или требовать установки дополнительного программного обеспечения. Вместо этого можно использовать Python, который предоставляет высокоуровневые библиотеки для работы с сетью и файлами.
Одной из таких библиотек является requests . Она предоставляет простой в использовании интерфейс для отправки HTTP-запросов и обработки ответов. Для скачивания файла можно использовать метод get() , который отправляет GET-запрос на указанный URL и возвращает ответ сервера. Затем полученные данные можно записать в файл с помощью стандартных средств Python.
Вот простой пример кода, который скачивает mp3-файл по URL:
import requests url = 'http://example.com/song.mp3' response = requests.get(url) with open('song.mp3', 'wb') as file: file.write(response.content)
В этом коде сначала импортируется библиотека requests , затем задается URL mp3-файла. Далее отправляется GET-запрос на этот URL и получается ответ сервера. Затем открывается файл song.mp3 на запись в двоичном режиме, и в него записывается содержимое ответа сервера.
Таким образом, скачивание файлов из Интернета с использованием Python является простой и эффективной задачей, которую можно легко решить с помощью библиотеки requests .
Как добавить ссылку на скачивание файла
В системе управления UralCMS вы можете вставлять ссылки на документы с возможностью скачать их.
Видео: добавление ссылки для скачивания файла
Для того, чтобы добавить ссылку на скачивание файла:
1. В системе управления сайтом найдите раздел в котором Вы хотите вставить ссылку на документ для скачивания и перейдите к его редактированию.

2. На открывшейся странице в поле текстового контента найдите и выделите текст или картинку, которые будут являтся ссылкой на скачивание, с помощью мыши.

3. Нажмите по выделеному тексту или изображению правой кнопкой мыши и выберите в открышемся меню пункт «Ссылка».

4. В открывшемся окне, в строке «Адрес ссылки» нажмите на кнопку «Обзор» для перехода в менеджер файлов.

5. В менеджере файлов вы сможете создать папки и загрузить файлы для скачивания. Перед загрузкой файла переименуйте его в латинские символы или цифры (A-Z, a-z, 0-9). Для того, чтобы добавить файл, кликните по кнопке «Загрузить» и выберите файл для добавления со своего компьютера. После загрузки файл появится в общем списке файлов, добавленных ранее на сервер (хостинг).

6. После успешной загрузки вернитесь к списку файлов, найдите необходимый документ для вставки и нажмите по нему левой кнопкой мыши .

7. В ы перейдете к окну вставки ссылки, где автоматически будет подставлено значение в поле «Адрес ссылки».

Внимание! Если Вы хотите вставить ссылку на документ .pdf, для параметра «Открывать ссылку» установите значение «В новом окне».
8. Для окончания вставки ссылки на документ нажмите на кнопку «Ок».

9. Сохраните изменения, внесенные в раздел.
Автоскачивание файла по ссылке
Мне нужно создать ссылку на файл, при переходе по которой файл автоматически сохраняется на устройство пользователя (android) могу использовать любые бесплатные сервисы. Или что-то подобное: как скачивать файлы с яндекс диска, написанное на java
Отслеживать
задан 31 мая 2020 в 20:09
99 7 7 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Воспользуйтесь этим сервисом чтобы сделать прямую ссылку на скачивание файла: https://www.magentawave.com/2013/09/get-direct-link-on-file.html?m=1

А если надо сгенерировать такую ссылку то для каждого облачного сервиса она будет отличаться. Для примера как сгенерировать прямую ссылку на Google drive
Отслеживать
ответ дан 1 июн 2020 в 23:34
901 3 3 серебряных знака 12 12 бронзовых знаков
Большое спасибо!
3 июн 2020 в 14:03
Highly active question. Earn 10 reputation (not counting the association bonus) in order to answer this question. The reputation requirement helps protect this question from spam and non-answer activity.
- java
- android