gpt4 book ai didi

python - Django 。如何以编程方式重命名使用 django-filer 上传的文件

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

假设我选择使用 django-filer 上传 10 个文件。他们最初的名字非常随意。我希望有一组规则,根据这些规则,它们应该被重命名,然后才被传递以进行进一步处理(缩略图等)。

我需要实际重命名所有内容,尤其是文件名,而不仅仅是图像模型名称。

我 try catch 图像模型的 pre_save 信号并更改 instance.original_filename 但这不是重命名文件名。或者也许我应该子类化并覆盖文件管理器包中的某些内容?

我会很感激代码示例,因为这对我来说有点困难。

最佳答案

我在views.py中使用了form_valid(self, form)来处理和操作我的图像。完整的代码有点长而且非常具体,但我将发布一些片段,它们应该展示如何生成文件名的想法:

def form_valid(self, form):
upload = self.request.FILES['profilbild_original'] #coming from a very simple form
self.request.user.student.profilbild_original = upload
self.request.user.student.save()
#no renaming was required here, but now I did some work:

inputfilepath = os.path.join(my_app.settings.MEDIA_ROOT, profilbild_path(self.request.user, str(upload)))
original = Image.open(inputfilepath)
original.thumbnail((200,200), Image.ANTIALIAS)
filename = str(upload)+'.thumbnail_200_200_aa.jpg'
filepath = profilbild_path(self.request.user, filename)
filepath = os.path.join(my_app.settings.MEDIA_ROOT, filepath)
original.save(filepath, 'JPEG', quality=90)
self.request.user.student.profilbild = profilbild_path(self.request.user, filename).replace("\\", "/")
self.request.user.student.save()

return super(ProfilbildView, self).form_valid(form)

profilbild_path是一个符合 https://docs.djangoproject.com/en/1.3/ref/models/fields/#django.db.models.FileField.upload_to 的函数:

def profilbild_path(instance, filename):
return os.path.join('profilbilder', str(instance.id), filename)

希望这能给您一些线索。

关于python - Django 。如何以编程方式重命名使用 django-filer 上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18980700/

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