这段代码怎么了?
这是我的HTML:
<html><body>
<form action="iindex.py" method="POST" enctype="multipart/form-data">
<p>File: <input type="file" name="ssfilename"></p>
<p><input type="submit" value="Upload" name="submit"></p>
</form>
</body></html>
这是我的Python脚本:
#! /usr/bin/env python
import os, sys;
from mod_python import apache
import cgi
import cgitb; cgitb.enable()
form = cgi.FieldStorage(keep_blank_values=1)
fileitem = form["ssfilename"]
.....
这是我得到KeyError的行。
File "/Applications/MAMP/python/framework/Python.framework/Versions/2.6/lib/python2.6/cgi.py", line 541, in __getitem__
raise KeyError, key
KeyError: 'ssfilename'
答案 0 :(得分:1)
编辑:完全错过了您所在的部分doing keep_blank_values = 1
;对不起,不知道出了什么问题。
来自http://docs.python.org/library/cgi.html:
包含空字符串的表单字段将被忽略,并且不会出现在字典中;要保留这些值,请在创建FieldStorage实例时为可选的keep_blank_values关键字参数提供真值。
因此,发生了这种情况,因为此字段留空了。
答案 1 :(得分:0)
我遇到了完全相同的问题,请确保将“enctype”设置为“multipart / form-data”并在字段中使用默认值。所以你的表单应该是这样的:
<form enctype="multipart/form-data" id="addFile" action="AddFile.py">
<input type="file" name="file" id="file" value=""/><br/>
<input type="submit" name="submit" value="Add File"/><br/>
</form>
我还在为我的Form使用JQuery处理程序,并尝试将其序列化,然后将其发布到我的python处理程序,我绕过它并且它一切都很好,所以你也应该尝试。
答案 2 :(得分:0)
检查表单操作URL中是否没有GET参数。
如果您需要传递任何数据,请将其作为表单元素放在要与您的上传文件一起发布的表单中。
然后,您在cgi.FieldStorage
中找到所有已发布的变量。