Мне требуется действующий сеанс, чтобы загружать файлы из моего веб-приложения.
Когда я открываю свое веб-приложение на своем устройстве iOS, вхожу в систему и пытаюсь загрузить файл (PDF) с моего сайта, меня выкидывает, и вместо этого ссылка открывается в Safari. Пользователь должен снова войти в систему из Safari, чтобы загрузить страницу.
Как я могу заставить файл открываться в веб-приложении и вместо этого запускать форму загрузки?
Я использую Carrierwave, и в контроллере у меня есть это, чтобы вызвать загрузку:
class DocumentsController < ApplicationController
# .. code omitted
def download
if @document.name.file.exists?
send_file @document.name.path, x_sendfile: true
else
redirect_to documents_url, notice: t(:file_not_found)
end
end
end
ОБНОВЛЕНИЕ: я нашел полурабочее решение, которое открывает файл прямо в браузере:
$(document).ready ->
if 'standalone' of window.navigator and window.navigator.standalone
# For iOS Apps
$('a').on 'click', (e) ->
e.preventDefault()
new_location = $(this).attr('href')
if new_location != undefined and new_location.substr(0, 1) != '#' and $(this).attr('data-method') == undefined
window.location = new_location
return
return
Используя этот фрагмент кода, мы заставляем пользователей iOS, работающих в полноэкранном режиме (веб-приложение), открывать все a
ссылки внутри приложения. Однако проблема заключается в том, что если пользователь открывает файл, кнопки «назад» не будет. А поскольку у пользователей iPhone отсутствует физическая кнопка «Назад», им придется принудительно перезапустить все приложение, чтобы выйти из отображаемого файла.