python - 对象存储中的重复项
问题描述
我在 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)
太感谢了。
解决方案
我认为你不应该直接上传,你可以先获取图像 md5,并MediaStorage
保存 md5 值的属性,在上传之前检查数据库中是否有相同的 md5,如果有可能你之前已经上传过这张图片
推荐阅读
- matlab - 用 MS C++17 编译一个 simulink 模型
- debugging - 在 VS Code 中调试 Jest 测试:断点移动
- java - Java Sockets IP 问题
- class - 缺少 HIVE UDF 类
- java - 用于完整 Web 应用程序的通用 executorservice(固定线程池)还是为每个请求使用 executorService 的新线程池?
- json - 如何在 Windows 上的 Git bash 上添加文件
- python - query.filter 代码在 Flask-AppBuilder 视图中的什么位置?
- api - 无法将请求传递给策略,因此我可以验证一些问题
- spring - SpringBoot 单元测试在使用 @InjectMocks 注释的对象上注入属性
- mysql - 如何计算 SQL 中断的连续日期的累积总和?