【问题标题】:Programmatically Upload Files in Django在 Django 中以编程方式上传文件
【发布时间】:2010-12-31 22:11:37
【问题描述】:

我已经检查了其他几个线程,但我仍然遇到问题。我有一个包含 FileField 的模型,并且我正在为各种目的生成半随机实例。但是,我在上传文件时遇到问题。

当我创建一个新文件时,它似乎可以工作(新实例保存到数据库中),在适当的目录中创建了一个文件,但文件的内容丢失或损坏。

以下是相关代码:

class UploadedFile(models.Model):
  document = models.FileField(upload_to=PATH)


from django.core.files import File

doc = UploadedFile()
with open(filepath, 'wb+') as doc_file:
   doc.documen.save(filename, File(doc_file), save=True)
doc.save()

谢谢!

【问题讨论】:

    标签: django django-models django-file-upload


    【解决方案1】:

    能不能像打开文件一样简单。由于您在“wb+”(写入、二进制、附加)中打开了文件,因此句柄位于文件末尾。试试:

    class UploadedFile(models.Model):
      document = models.FileField(upload_to=PATH)
    
    
    from django.core.files import File
    
    doc = UploadedFile()
    with open(filepath, 'rb') as doc_file:
       doc.document.save(filename, File(doc_file), save=True)
    doc.save()
    

    现在它在文件的开头打开。

    【讨论】:

    • 一个幸运的猜测 ;) ...我实际上从来没有需要以编程方式上传文件,但这是我能看到的唯一看起来可疑的东西。
    • 为什么要保存整个模型?这不是多余的吗(之前由doc.document.save()save=True 调用)
    • 我实际上也遇到了类似的问题,添加 'b' 标志解决了这个问题 - 我正在打开 pdf 文件。
    • filename 是什么?
    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多