У меня проблема при попытке загрузить изображение в DRF. Все отлично работает со следующим кодом.
class UploadPhotoViewset(
generics.CreateAPIView
):
queryset = Photo.objects.all()
parser_classes = (JSONParser, MultiPartParser, FormParser, FileUploadParser)
serializer_class = PhotoSerializer
def post(self, request, *args, **kwargs):
print(request.data)
img_file = request.data["image"]
request.data["size"] = img_file.size
request.data["title"] = img_file.name
# request.data["checksum"] = self.get_file_md5(img_file)
request.data["image"] = img_file
print(request.data)
return self.create(request, *args, **kwargs)
Но когда я попытался сгенерировать md5 ha sh для файла. Странные вещи случаются.
class UploadPhotoViewset(
generics.CreateAPIView
):
queryset = Photo.objects.all()
parser_classes = (JSONParser, MultiPartParser, FormParser, FileUploadParser)
serializer_class = PhotoSerializer
def post(self, request, *args, **kwargs):
print(request.data)
img_file = request.data["image"]
request.data["size"] = img_file.size
request.data["title"] = img_file.name
# request.data["checksum"] = self.get_file_md5(img_file)
request.data["image"] = img_file
print(request.data)
return self.create(request, *args, **kwargs)
def get_file_md5(self, img):
hash_md5 = hashlib.md5()
for chunk in iter(lambda: img.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
Данные не могут быть проверены.
serializer.is_valid(raise_exception=True)
даст
{
"errors": {
"image": [
"Upload a valid image. The file you uploaded was either not an image or a corrupted image."
]
}
}
Кто-нибудь знает почему?