Переадресация Django rest api на S3 ссылка для загрузки возвращает предупреждение MIME-типа в консоли Chrome - PullRequest
0 голосов
/ 24 ноября 2018

Я использую Django Rest Framework для создания API и пытаюсь перенаправить свою конечную точку для загрузки файлов из AWS S3.Это работает, но в Chrome я получаю следующее предупреждение:

Ресурс интерпретируется как Документ, но передается с приложением MIME-типа / принудительная загрузка

Это мой метод getс моей точки зрения:

def get(self, request, pk, format=None):
    file_item = self.get_object(pk)
    serializer = FileSerializer(file_item)

    response = redirect(serializer.data['file_url'])
    return response

Как видите, я прошел тип контента, почему Chrome все еще выдает предупреждение?Мне нужно иметь возможность загружать файлы в различных форматах, например, pdf, jpg и т. Д.

Обновление : я правильно указал тип mime, и когда я печатаю объект ответа, это то, что яполучить.Это заголовок "test / html", который вызывает проблемы?Как мне это убрать?

<HttpResponseRedirect status_code=302, "text/html; charset=utf-8", url="https://a.com/xxxx/x.pdf&response-content-type=application/pdf&response-content-disposition=attachment%3Bfilename%3D%22xxx.pdf%22">

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Я понял это.Проблема в том, что я передаю заголовки в "file_url" вместо реального объекта ответа.

0 голосов
/ 24 ноября 2018

Теперь я вижу, что вы возвращаете redirect, что неверно.Вместо этого верните объект HttpResponse :

response = HttpResponse(data, content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="{}"'.format(filename)
return response

data должны быть данными файла, а filename имя файла.

См. этот вопрос для более.

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