Принудительно загрузить файл в веб-приложении Django в мобильных браузерах

У меня есть FileField с фильмом, я пытаюсь, чтобы пользователь на мобильной платформе (chrome/safari) мог нажать кнопку загрузки и загрузить его. В настоящее время он открывается в новом окне независимо от того, что я делаю.

Мой взгляд

def download(request):
    file_path = 'movie.mp4'
    if os.path.exists(file_path):
        with open(file_path, 'rb') as fh:
            response = HttpResponse(fh.read(), content_type="video/mp4")
            response['Content-Disposition: attachment'] = 'inline; filename=' + os.path.basename(file_path)
            return response
    raise Http404

путь к файлу жестко закодирован для целей тестирования atm.

Все, что я читал, говорит мне, что это невозможно, потому что сафари и другие мобильные браузеры лучше открываются, чем загружаются. Я пытался изменить типы пантомимы и другие вещи.


person Nogg    schedule 06.05.2018    source источник


Ответы (2)


Ваш content-disposition должен содержать attachment, чтобы пользователь мог его загрузить. Это должно быть примерно так:

response['Content-Disposition'] = 'attachment; filename=' + os.path.basename(file_path) + '.mp4'
person Lemayzeur    schedule 06.05.2018
comment
Я изменил его на это и по-прежнему открывает его в окне мобильных браузеров. - person Nogg; 06.05.2018

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

обратите внимание, что ссылки для скачивания всегда открываются в новом окне, но автоматически закрываются.

Я надеюсь, что вы сможете добиться некоторого прогресса

person web-stars    schedule 06.05.2018
comment
К сожалению, я не думаю, что это мне поможет :/ - person Nogg; 07.05.2018
comment
Ах, очень плохо. Выяснили что-нибудь еще? - person web-stars; 08.05.2018
comment
Ничего... Отстой. Я переключился на попытку разработать бота KiK, чтобы он делал то, что мне нужно (отправлять контент пользователю kik), вместо того, чтобы надеяться, что кто-то что-то придумает. Так же есть много других вопросов, похожих на этот. - person Nogg; 08.05.2018