python - pythonはhtmlフォームからファイルを受け取ります

python python-3.x

入力タグと送信ボタンを備えたフォームがあります。

<input type="file" name="filename" size="25">


投稿を処理するpythonファイルがあります。

def post(self):


フォームで受け取っているファイルは.xmlファイルです。Pythonのpost関数では、その 'foo.xml'を検証する別の関数に送信します(minixsvを使用)。

私の質問は、ファイルを取得する方法ですか?私は試した:

form = cgi.FieldStorage()

inputfile = form.getvalue('filename')


しかし、これは入力ファイルにコンテンツを入れます。テキストではなく.xmlファイルを要求するminisxv関数に渡すことができる 'foo.xml'ファイル自体はありません...

更新とにかく、入力ファイルの代わりにテキストを受け入れる関数を見つけました
答え
多くの場合、文字列からXMLを抽出する関数もあります。たとえば、minidomにはparseStringとlxml etree.XMLがあります。

コンテンツがある場合は、StringIOを使用してファイルのようなオブジェクトを作成できます。

from StringIO import StringIO
content = form.getvalue('filename')
fileh = StringIO(content)
# You can now call fileh.read, or iterate over it


ディスクにファイルが必要な場合は、tempfile.mkstempを使用します。

import tempfile
content = form.getvalue('filename')
tmpf, tmpfn = tempfile.mkstemp()
tmpf.write(content)
tmpf.close()
# Now, give tmpfn to the function expecting a filename

os.unlink(tmpfn) # Finally, delete the file
関連記事

python - PyDevを使用してPythonで変数アクセスにブレークポイントを設定する方法はありますか?

python - ターゲット関数が完了した後にPythonスレッドが確実に終了するようにするにはどうすればよいですか?

python - django / python:複数のテーブルを持つ生のSQL

python - ブレンダーは頂点ごとのUV座標をエクスポートできますか?

python - Pythonのインタラクティブ(注釈付き)チャート[終了]

python - Makoマクロのオプションとして「クラス」を使用する

python - 「pip install」と「setup.py install」での最大再帰[終了]

python - ウェルカムテキストを表示するにはどうすればよいですか?

python - 新しいインタープリターセッションを開始せずに、編集のためにIDLEで.pyファイルを開くにはどうすればよいですか?

python - Django / Pythonを使用して既存のWebサービスを利用する