Top / Programming / Python / Python CGIプログラミング入門 / 選択されたファイルの内容を取得する

選択されたファイルの内容を取得する

選択されたテキストファイルの内容を取得し表示します。

test14.cgi

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
選択されたファイルの内容を取得する
'''
html = '''Content-Type: text/html

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
  <title>選択されたファイルの内容を取得する</title>
  <style type="text/css">
<!--
pre {
  border-width: 1px;
  border-style: dotted;
  border-color: #009999;
  margin: 1em;
  padding: 1em;
}
-->
  </style>
</head>
<body>
<h1>選択されたファイルの内容を取得する</h1>
<p>選択されたファイルの内容は、
<pre>%s</pre>
です。</p>
<form action="test14.cgi" method="post" enctype="multipart/form-data">
  <input type="file" name="file" />
  <input type="submit" />
</form>
</body>
</html>
'''

import cgi

form = cgi.FieldStorage()
data = ''
if form.has_key('file'):
    item = form['file']
    if item.file:
        data = item.file.read()

print html % cgi.escape(data)

解説

import cgi
f = cgi.FieldStorage()

HTMLフォームから送信された値は、cgiモジュールのFieldStorageクラスを使用して取得します。

if form.has_key('file'):
    item = form['file']

if form.has_key('file') で値が存在することを確認し、item = form['file'] で FieldStorage クラスのインスタンスを取得します。

if item.file: でファイルのデータが存在することを確認します。item.file はファイルでなければ None を返します。 data = item.file.read() でファイルのデータを読み込みます。

print html % cgi.escape(data)

ファイル中の文字のうち、"&"、 "<"、">" はそのままでは表示できません。

cgiモジュールの escape() を使い、HTMLで正しく表示できる文字に変換してから、文字列フォーマットの %s と置き換えて出力します。

関連URL

更新履歴