Как разрешить пользователям напрямую загружать файл, хранящийся в моей папке мультимедиа в django? - PullRequest
0 голосов
/ 21 апреля 2020

Итак, я создаю RESTful API для проекта «Платформа разработки» с использованием Django и хочу настроить функцию загрузки / выгрузки, где пользователи платформы могут загружать различные файлы (файлы Excel, css, PDF-файлы, C# сценарии, пакеты Unity, файлы Blender и т. д. c) и другие пользователи могут загружать эти файлы через конечную точку. У меня настроена и правильно работает конечная точка файла загрузки.

В конечной точке файла загрузки я хочу получить имя файла, который пользователь хочет загрузить, а также проверить учетные данные и разрешения пользователя для загрузки этого файла и выполнить некоторые действия. другие модели также запрашивают и проверяют и, наконец, находят этот файл в моей папке / media / и подают его в браузер пользователя для автоматической загрузки или всплывающего окна загрузки в браузере. (Эта конечная точка загружаемого файла получит удар, когда пользователь нажмет кнопку «Загрузить файл» на веб-интерфейсе).

Как мне добиться этого в django? Может ли кто-нибудь предоставить пример кода для «отправки» этого файла, извлеченного из папки мультимедиа, в качестве ответа браузеру пользователя для загрузки?

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете написать функцию для загрузки, как показано ниже.

def download(request,file_name):
  file_path = settings.MEDIA_ROOT +'/'+ file_name
  file_wrapper = FileWrapper(file(file_path,'rb'))
  file_mimetype = mimetypes.guess_type(file_path)
  response = HttpResponse(file_wrapper, content_type=file_mimetype )
  response['X-Sendfile'] = file_path
  response['Content-Length'] = os.stat(file_path).st_size
  response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name) 

  return response

В основном в reposne вы должны установить X-Sendfile, Content-Disposition, Content-Length, которые важны. А в начале вы можете что-то вроде: <a href="{file_path}" download></a>

Вы также можете проверить ссылки ниже, которые могут помочь вам получить ваш ответ.

Django скачать файл

Загрузка файлов (которые загружены) из папки мультимедиа в django 1.4.3

https://ednsquare.com/question/how-to-serve-downloadable-files-using-django------9lAMsr

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