2


2

Pythonファイルアップロード「KeyError」

このコードの何が問題になっていますか?

これが私のHTMLです:

File:

これは私の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'

3 Answer


1


編集:あなたが `keep_blank_values = 1`をしている部分を完全に見逃した。申し訳ありませんが、何が間違っているのかわかりません。

_ 空の文字列を含むフォームフィールドは無視され、辞書には表示されません。このような値を保持するには、FieldStorageインスタンスを作成するときに、オプションのkeep_blank_valuesキーワードパラメーターにtrue値を指定します。 _

したがって、このフィールドが空白のままになっているため、これが発生しています。


0


まったく同じ問題がありました。「enctype」が「multipart / form-data」に設定されていることを確認し、フィールドでデフォルト値を使用してください。 だからあなたのフォームはこのようになるはずです。


また、フォームにJQueryハンドラーを使用しており、それをシリアル化してからPythonハンドラーにポストしようとしていましたが、それをバイパスし、すべて順調に進んでいたので、それも試してみてください。


0


フォームアクションURLにGETパラメーターがないかどうかを確認します。 データを渡す必要がある場合は、アップロードファイルとともにPOSTされるフォーム内にフォーム要素として配置します。 その後、 `cgi.FieldStorage`でPOSTされたすべての変数を見つけます。