我正在尝试检测在提交cgi表单时是否上传了可选文件。
我读过here我应该做的事情:
myfile = form["myfile"]
if myfile.file:
# It's an uploaded file; save it to disk
file = open('path_to_file','wb')
file.write(myfile.file.read())
file.close()
但这不适合我。无论文件是否已上传,该文件始终都在被写入。
在使用任何其他字段时,我总是可以使用默认值来检查它:
field = cgi.escape(data.getfirst('field','null'))
我无法看到文档中文件面对此问题的方法。有帮助吗?
感谢。
答案 0 :(得分:0)
我使用Firefox进行了测试,上传带有空文件输入的表单会产生以下帖子内容:
-----------------------------135438447855682763402193870
Content-Disposition: form-data; name="foo"; filename=""
Content-Type: application/octet-stream
-----------------------------135438447855682763402193870--
因此上传了零长度字段。但是,没有设置文件名,因此请测试filename
属性的值。
如果字段代表上传的文件,则通过value属性或访问该值 getvalue()方法以字符串形式读取内存中的整个文件。这可能不是你想要的。 您可以通过测试filename属性或文件属性来测试上传的文件。