私は単純な html フォームと cgi-bin によって処理されるバックエンド python を持っています。フォームからファイルをアップロードし、そのファイルの内容を Python スクリプトで出力しようとしています。私のHTMLコード:
<form id = "upload" enctype="multipart/form-data" action="/var/www/cgi-bin/test.py" method="post">
<div id = "table">
<table class = "center" border="1" cellpadding="10">
<tr><td style="height: 131px">Product Details</td>
<td style="height: 131px">Product Name*: <input type="text" name="product" id="product" size="35" ><br /><br />
Platform*: <input type="text" name="platform" id="platform" size="35" >
</td></tr>
<tr><td style="height: 131px">File Upload</td>
<td style="height: 131px"><p>Upload Host File: <input type="file" name="hostupload" /></p><br/>
Upload Test File: <input type="file" name="testupload" /></p>
</td></tr>
<tr align="center"><td></td><td><input type = "submit" id="upload" value = "UPLOAD"/>
</td></tr>
</table>
</div>
</form>
私のpythonコード:
#!/usr/local/bin/python
import os
import commands
import cgi, cgitb
print "Content-Type: application/json"
print
form = cgi.FieldStorage()
product = form['product'].value
platform = form['platform'].value
filedata = form['hostupload']
print product
print platform
if filedata.file:
print filedata.file.read()
製品とプラットフォームは正常に印刷されています。しかし、 filedata = form['hostupload'] という行を追加すると、エラーが発生します。
File "/usr/local/lib/python2.7/cgi.py", line 541, in __getitem__, referer:
[error] [client 10.1.1.212] raise KeyError, key,
しかし、「hostupload」という名前は私の形式では正しいです。誰が私が間違っているのか教えてもらえますか?