Django - сохраняет изображение в корзине Supabase, но изображение пустое
Я загружаю изображение через Angular - django - Supabase s3. Чтобы отправить изображение в корзину Supabase, я использую модуль django-storages. Когда я получаю изображение из supabase, изображение повреждается дополнительными байтами.
Вот мои настройки django-хранилищ
STORAGES = {
"staticfiles": {
"BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
},
"default": {
"BACKEND": "storages.backends.s3.S3Storage",
"OPTIONS": {
"bucket_name": os.getenv('SUPABASE_STORAGE_BUCKET_NAME'),
"region_name": os.getenv('SUPABASE_S3_REGION_NAME'),
"access_key": os.getenv('SUPABASE_S3_ACCESS_KEY_ID'),
"secret_key": os.getenv('SUPABASE_S3_SECRET_ACCESS_KEY'),
"endpoint_url": os.getenv('SUPABASE_S3_ENDPOINT_URL')
},
}
}
Вот мой код на django для установки метода загрузки изображений для просмотра.
@action(detail=True, methods=['post'], url_path='image', parser_classes=[FormParser, MultiPartParser])
def image_upload(self, request, pk=None):
project = self.get_object()
image = request.FILES['image']
project.image = image
project.save()
projectReadSerializer = ProjectReadSerializer(project)
return Response(data = projectReadSerializer.data)
всякий раз, когда я публикую изображение, я получаю пустое изображение из корзины supabase, в которой больше байт, чем в исходном.
Есть какие-нибудь решения?
Я попытался загрузить изображение, вот результат: исходное изображение и фрагмент изображения
Я также проверил изображение с помощью PIL, и оно показалось мне нормальным:
def image_upload(self, request, pk=None):
project = self.get_object()
image = request.FILES['image']
img = Image.open(image)
img.show()
project.image = image
project.save()
projectReadSerializer = ProjectReadSerializer(project)
return Response(data = projectReadSerializer.data)
итак, проблема в project.image = графическая часть кода, как кажется.
Итак, я нашел решение. Проблема заключалась в том, что boto3 версии 1.36 повредил файл, добавив в его конец x-amz-checksum-crc32. Я понизил версию boto3 с помощью pip install "boto3<1.36", и все работает нормально!