Джанго: Как скачать файл с S3 - PullRequest
0 голосов
/ 25 марта 2019

Что я хочу сделать, это загрузить файл из Amazon S3. Я искал способы сделать это, но это не сработало. Я видел этот вопрос и использовал один из кодов ответа, но он не сработал, поэтому я пытаюсь сделать что-то другое.

Что я сделал, так это.

html

<a href="#" download="{{ file.file.url }}">{{ file.filename }}</a>

когда я щелкаю по имени файла, на самом деле начинается загрузка, но файл не работает. Он говорит, что мы не поддерживаем тип файла.

Я думаю, это потому, что путь неправильный. Когда я проверяю элемент в браузере, путь выглядит правильным, но когда я загружаю файл, имя файла выглядит как https__..., а не https://

Как я могу это исправить? В чем причина? Сейчас я проверяю, работает ли он на локальном компьютере.

Обновление

мой текущий код В итоге я создал вид для загрузки файла, но он все равно не работает даже на производстве. Содержимое файла всегда пусто. Для файла изображения его нельзя открыть.

def download_file(request, file_pk):
    file = get_object_or_404(File, pk=file_pk)
    name = file.file.name
    path_to_file = "https://%s/media/%s" % (settings.AWS_S3_CUSTOM_DOMAINm name)

    resp = HttpResponse(content_type='application/force-download')
    resp['Content-Disposition'] = "attachment; filename=%s" % name
    resp['X-Sendfile'] = path_to_file
    return resp

1 Ответ

0 голосов
/ 25 марта 2019

Это из-за настройки метаданных вашего файла, хранящегося в S3.

Можете ли вы попытаться изменить метаданные файла, который вы хотите загрузить?

Шаг ниже

В хранилище S3 выберите файл и выберите [свойства] -> [метаданные]. Затем добавьте новые метаданные в качестве ключа «Content-Deposition» и значения «attachment».Ссылка ниже очень полезна для понимания.

https://docs.easydigitaldownloads.com/article/1172-how-do-i-force-files-to-download-in-amazon-s3

Затем вам нужно изменить HTML следующим образом.

  <a href="{{ file.file.url }}" download="filename.extension">{{ file.filename }}</a>

Я не уверен в этомработает для любого типа файлов.Но это сработало, когда я разработал систему, которая загружает файл JPEG.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...