django - 在 Django 中以编程方式上传文件

标签 django django-models django-file-upload

我已经检查了其他几个线程,但仍然有问题。我有一个包含 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()

谢谢!

最佳答案

会不会像打开文件一样简单。由于您在“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()

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

关于django - 在 Django 中以编程方式上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993939/

相关文章:

django - 从 Media Root (Django) 隐藏子目录

python - Django 查询检索被选为外键的项目?

django 在渲染表单时转义小部件

python - 在Django应用程序中获取上传文件的文件大小

python - 使用基于类的 View 重新打开关闭的 django InMemoryFileUpload

python - Django Compressor 无法在生产环境中运行

python - 如何在 django GET api(rest 框架)中返回单个对象

python - Django 休息框架 : Get detail view using a field other than primary key integer id

python - Django Model API 通过中间表反向查找多对多关系

python - 使用 Django 将文件复制到另一个文件夹?