Рассмотрим один из способов скачать файл без ссылки
Допустим, на нашем сайте есть pdf-файл каталога товаров или услуг, открытый для скачивания по ссылке всем пользователям. Но хочется, чтобы пользователь оставил свои контактные данные перед тем как он скачает сайт. Например, при клике на кнопку "Скачать каталог", пользователю открывается форма, в которую он вводит свое имя, телефон, почту, если нужно. А по нажатию на кнопку "Отправить" происходит сначала отправка формы, а после сразу скачивание файла. Вот и возникает вопрос: как запустить скачивание файла автоматически после выполнения всех этих действий.
Не стану приводить в этой статье код отправки формы, а приведу пример кода скачивания файла, который следует после успешной отправки формы. Предположим, что на нашем сайте в папке upload находится файл каталога catalog.pdf. Тогда:
$.ajax({
url: '/upload/catalog.pdf',
dataType: 'binary',
xhrFields: {
'responseType': 'blob'
},
success: function(data, status, xhr) {
var blob = new Blob([data], {type: xhr.getResponseHeader('Content-Type')});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = 'catalog.pdf';
link.click();
}
});
Здесь в параметре url указываем относительный путь до файла, в ответе сервера, в параметре download указываем имя, которое присвоится скачанному файлу.