gpt4 book ai didi

django - 如何在Django中上传文件并根据格式保存在不同的位置? (jpeg 和文档)

转载 作者:行者123 更新时间:2023-12-05 03:15:25 26 4
gpt4 key购买 nike

如何在 Django 中上传文件并根据格式将它们保存在不同的位置(并在信号中执行其他操作 - post_save)? (jpeg 和文档)

def upload(request):
user = request.user
upload_form = UploadForm(request.POST or None, request.FILES or None)
if request.method == "POST":
if upload_form.is_valid():
my_model = upload_form.save(commit=False)
my_model.user = user
my_model.save()

模型:

class FileStore(models.Model):
user = models.ForeignKey(User)
standard = models.FileField(upload_to="standard")
after_operation = models.FileField(upload_to="after_ocr",blank=True, null=True)

信号:

@receiver(post_save, sender=FileStore)
def my_handler(sender,instance, **kwargs):
if kwargs['created']:
text= image_to_string(Image.open(instance.standard))
...
instance.after_operation = File(text_file)
instance.save()

如果文件是 .doc.pdf,我想只保存在 standard 字段中,如果文件是 .jpeg.png 我需要运行我的信号函数。

最佳答案

例如,您可以像这样访问 request.FILES 字典来检索上传的文件:

uploaded_file = request.FILES['file']

uploaded_file 现在是 UploadedFile 类型,这意味着您可以像这样获取有关文件的信息:

# name of the file, ie: my_file.txt
filename = uploaded_file.name
# file extension (get the las 4 chars)
file_ext = filename[-4:]
# handle file extension
if file_ext == '.jpg':
# do something for jpegs
if file_ext == '.doc':
# do something for docs

所以现在,为了保存它,你可以试试这个,我还没有证明:

# f is the UploadedFile
model_file = File(f)
model_file.save('path/to/wherever.ext', f.readlines(), true)

希望对您有所帮助!这可能无法开箱即用,但我希望它能为问题带来一些启示。尝试查看文档:django filesdjango uploaded files .这个主题有很好的记录。

祝你好运!

关于django - 如何在Django中上传文件并根据格式保存在不同的位置? (jpeg 和文档),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16837058/

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