1

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

但是当我保存表单时,文件会自动保存。有什么办法可以防止文件被保存?

谢谢

4

1 回答 1

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()因此不会将您的表单数据写入文件系统。

于 2012-11-29T02:37:28.923 回答