首页 > 解决方案 > 对象存储中的重复项

问题描述

我在 Django 应用程序中使用Minio 后端。我有一个功能,用户可以使用对象存储(用户在线图库),此外,用户可以从设备上传新图像以创建帖子。但是当我使用对象存储图像并创建图像时,图像在对象存储中重复(因为每次创建帖子时,我都想在对象存储中上传新图像(本地上传的图像))。我应该怎么做才能防止这些重复?

这是我的模型:

        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)

太感谢了。

标签: pythondjangohashobject-storage

解决方案


我认为你不应该直接上传,你可以先获取图像 md5,并MediaStorage保存 md5 值的属性,在上传之前检查数据库中是否有相同的 md5,如果有可能你之前已经上传过这张图片


推荐阅读