В настоящее время я пытаюсь создать приложение с клиентским и серверным кодом.Мой внешний интерфейс построен в 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 вместо этого, но просто не смог заставить его работать.Любое решение моей проблемы, независимо от используемого класса синтаксического анализатора, мне подходит.