Здравствуйте! Помогите пожалуйста. Есть форма с чекбоксами, которую перехватывает js по клику отправка формы. Код (Text): $(document).on('click', '#download', function (e) { e.preventDefault(); var res = []; $.each($('input[type=checkbox]:checked'), function () { res.push($(this).parent().find('input[type=text]').attr('data-id')); }); var data = { action: 'downloadForm', download: res, }; }) Тут я получаю массив файлов которые нужно скачать. Только вот как скачать не могу никак реализовать - помогите. Спасибо!
Замечтательно... Будем продолжать играть в угадай мелодию: С вашего сервера вам нужно отдать файлы на скачивание пользователю? С чужого сервера вам нужно скачать указанные фалы к себе на сервер? Свой вариант
Просто скачивание файлов! Файлы уже на сервере. Есть реализация типа <a href="1.jpg" download>Скачать файл</a>?
А по проще? Смысл такой. Есть форма в которой уже указаны пути на файл (Они в чекбоксах), далее по нажатию на кнопку JS получает массив этих файлов с сервера далее нужно предложить клиенту их сохранить на пк
Отдать один файл на скачивание - не очень большая проблема и есть разные варианты это реализовать. Но вам, насколько я вижу, нужно отдавать несколько файлов, а без их архивирования, лично я, вариантов не вижу. В принципе, можно отправить массив данных на сервер (тем же ajax-ом), там собрать архив с файлами, вернуть ссылку на этот архив. А дальше дело за малым: window.location = 'path/to/archive.zip'; или создать элемент <a> (может даже с атрибутом download) и программно выполнить на этом элементе клик и т.д.
Если JSZip для вас сложно, а вариант с упаковкой архива на сервере "вообще не вариант", то у вас один путь - отказаться от вашей затеи, т.к. другие способы будут еще более сложными.
Всем спасибо! Все получилось! Код (Text): $(document).on('click', '#download', function (e) { e.preventDefault(); var res = []; $.each($('input[type=checkbox]:checked'), function () { res.push($(this).parent().find('input[type=text]').attr('data-id')); }); function downloadAll(urls) { var link = document.createElement('a'); link.setAttribute('download', null); link.style.display = 'none'; document.body.appendChild(link); for (var i = 0; i < urls.length; i++) { link.setAttribute('href', urls[i]); link.click(); } document.body.removeChild(link); } downloadAll(res); })