gpt4 book ai didi

python - 获取多次上传的文件的 Django 生成的唯一名称

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:37 25 4
gpt4 key购买 nike

我正在使用 DRF 后端上传文件。在我的具体情况下,我希望在文件上传后获取文件的名称。原因是,如果用户上传同名文件,我仍然可以独立处理。

views.py:

class ImageUploaderView(viewsets.ModelViewSet):
renderer_classes = [renderers.JSONRenderer]
queryset = ImageUploader.objects.all()
serializer_class = ImageUploaderSerializer
parser_classes = (MultiPartParser,)

序列化器.py:

class ImageUploaderSerializer(serializers.ModelSerializer):
class Meta:
model = ImageUploader

models.py:

class ImageUploader(models.Model):
# name=models.ImageField(upload_to='media')
name=models.FileField(upload_to='media')

我尝试将信号和 Hook 放在模型定义之后,但我无法获取此文件名。有人可以解释一下吗?

更新:让我详细说明我想要实现的基本目标:

  • 用户1点击呈现的端点“/api/calculate_interest_rate”通过前端 React 组件。 “calculate_interest_rate”由以下人员提供DRF,并允许用户上传 CSV 文件。这将被存储为“user1.csv”,文件被处理然后制成表格(由 react )。

  • 在与 User1 并行的同时,User2 访问相同的端点“/api/calculate_interest_rate”并且他错误地将文件保存为“user1.csv”,并将其上传到系统。

所以我希望能够检测文件的两个名称以便处理它。通过始终使用相同的默认文件名(例如使用 OverwriteStorage() 技术),当两个或多个用户使用相同的文件名时,我可能会造成困惑。因此,我正在研究一种允许我按原样获取文件名并立即处理它的技术。

最佳答案

使用存储选项怎么样?

class OverwriteStorage(FileSystemStorage):
def get_available_name(self, name, max_length=None):
print("filename", name)
#parts = name.split('.') you can separate name and extension.
return super().get_available_name(name)

upload_image = models.ImageField(
upload_to=[yourpath],
default=[defaultname],
storage=OverwriteStorage()
)

关于python - 获取多次上传的文件的 Django 生成的唯一名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45515607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com