代码之家  ›  专栏  ›  技术社区  ›  SapphireSun

以编程方式在Django中上载文件

  •  8
  • SapphireSun  · 技术社区  · 16 年前

    我查过其他几条线,但还是有问题。我有一个包含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()
    

    谢谢您!

    1 回复  |  直到 16 年前
        1
  •  19
  •   Andre Bossard    13 年前

    它能像打开文件一样简单吗?由于您在“wb+”中打开了文件(write、binary、append),所以句柄位于文件的末尾。尝试:

    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()
    

    现在它在文件开头打开。

    推荐文章