有没有办法django不保存与表单一起上传的文件

时间:2012-11-29 02:22:11

标签: python django

我有用户附加文件的django表单,但是我从文件本身中提取pdf表单数据,所以我不想保存文件。

但是当我保存表单时,文件会自动保存。有没有办法阻止文件被保存?

感谢

1 个答案:

答案 0 :(得分:3)

当文件上传到您的服务器时,django会根据您指定的FILE_UPLOAD_HANDLER处理上传的文件。默认情况下,它们是: -

("django.core.files.uploadhandler.MemoryFileUploadHandler",
 "django.core.files.uploadhandler.TemporaryFileUploadHandler",)

这意味着文件对象位于服务器的内存中,直到form.save()form对象包含您上传的文件)被调用。调用后,文件对象将根据您在该文件字段的upload_to属性中指定的内容写入文件系统。

我要做的是阻止将上传的文件写入您的文件系统,将此文件对象分配给变量而不调用form.save()。像这样: -

uploaded_file = request.FILES['file']

我们可以故意不指定request.FILES,如下所示: -

form = MyModelFormWithFileField(request.POST, None)

由于您已分配uploaded_file变量,因此您现在可以执行任何操作,而无需将其写入文件系统。

由于您的form实例未分配request.FILES,因此form.save()不会将您的表单数据写入文件系统。