Django Rest Framework: заголовок запроса на загрузку файла и границы веб-набора, включенные в сохраненный файл с использованием FileUploadParser - PullRequest
1 голос
/ 09 апреля 2019

В настоящее время я пытаюсь создать приложение с клиентским и серверным кодом.Мой внешний интерфейс построен в React, а моим внутренним интерфейсом является Python / Django, использующий django-rest-framework.

Функция, которую я сейчас создаю, - это функция загрузки файлов, которая использует библиотеку Dropzone.js для сохранения и хранения файлов на сервере.В конечном итоге я хотел бы перенаправить файлы на AWS S3, но я еще не совсем там.

Мой файл views.py в настоящее время принимает и сохраняет файл, однако webKitBoundary и информация о файле такжесохраняются в файле.Оптимально, я хотел бы сохранить файл без необходимости манипулировать файлами, чтобы обрезать ненужную информацию.

Вот мои views.py :

class SaveFile(APIView):

authentication_classes = (CsrfExemptJWTAuthentication, )
parser_classes = (FileUploadParser, )  

def post(self, request, format=None):
     newFile = File()
     newFile.file = request.data['file']
     newFile.save()

    return HttpResponse('file upload success')

Моя модель файла:

class File(models.Model):
   file = models.FileField(upload_to = 'files')

   def __str__(self):
      return self.file.name

   class Meta:
       db_table = "files"

Мой test.txt:

hello (.^-^),

И сохраненный результат:

------WebKitFormBoundaryySdQAcRrBj8kluZ5
Content-Disposition: form-data; name="file"; filename="yurrr.txt"
Content-Type: text/plain

hello (.^-^),
------WebKitFormBoundaryySdQAcRrBj8kluZ5--

Я нашел похожеевопрос здесь: заголовки и границы включены в загруженный файл django rest framework

Однако, когда я пытаюсь реализовать предложенный ответ, используя MultiPartParser вместо FileUploadParser, мой request.data ['file']выдает ошибку, так как мой request.data - пустой QueryDict.Так что я даже не могу обработать входящий файл.

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

Спасибо за любую помощь, он очень ценится!

Изменить: я открыт для использования MultiPartParser вместо этого, но просто не смог заставить его работать.Любое решение моей проблемы, независимо от используемого класса синтаксического анализатора, мне подходит.

...