问题描述
我在 Django 应用中使用了 Minio-backend。我有一个功能,用户可以使用对象存储(用户在线图库),此外,用户可以从设备上传新图像以创建帖子。但是当我使用对象存储图像并创建图像时,图像在对象存储中重复(因为每次创建帖子时,我都想在对象存储中上传新图像(本地上传的图像))。我应该怎么做才能防止这些重复?
这是我的模型:
class MediaStorage(models.Model):
file = models.FileField(verbose_name="Object Upload",storage=MinioBackend(bucket_name='django-backend-dev-private'),upload_to=iso_date_prefix)
这是我创建的新帖子:
class CreatePostView(generics.CreateAPIView):
...
def post(self,request,*args,**kwargs):
user = request.user
data = request.data
...
for media_file in post_files:
file_team=post_team
f = MediaStorage.objects.create(team=file_team,owner=user)
f.media=media_file
f.save()
post.multimedia.add(f)
return Response(post_serializer.PostSerializer(post).data,status=status.HTTP_201_CREATED)
非常感谢。
解决方法
我认为您不应该直接上传,您可以先获取图像 md5,然后将属性设置为 MediaStorage
以保存 md5 值,上传前检查 DB 中是否存在相同的 md5,如果有,您可能已经上传之前的这张图