ユーザーがファイルをアップロードできるシンプルな Web ページが必要です。それを行う最も簡単な方法は何でしょう。
開始方法SimpleHTTPServer
は知っていますが、を使用してファイルをアップロードする方法がわかりませんSimpleHTTPServer
。それが可能かどうかさえわかりません。
CGIを使用してファイルをアップロードするためのコードをいくつか見つけましたが、コマンドラインでこのコードを実行すると、画面にHTMLコードを印刷するだけです。
ユーザーがファイルをアップロードできるシンプルな Web ページが必要です。それを行う最も簡単な方法は何でしょう。
開始方法SimpleHTTPServer
は知っていますが、を使用してファイルをアップロードする方法がわかりませんSimpleHTTPServer
。それが可能かどうかさえわかりません。
CGIを使用してファイルをアップロードするためのコードをいくつか見つけましたが、コマンドラインでこのコードを実行すると、画面にHTMLコードを印刷するだけです。
私はまだPythonに不慣れで、投稿に追加したのと同じコードを使用してみました. 唯一の問題は、単一ファイルのアップロードしかできないことです。一度に複数のファイルをアップロードしたかったのです。
ここにあるまだ利用可能なコードを使用して、deal_post_data
メソッドを次のように置き換えることができます。
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST'})
self.send_response(200)
self.end_headers()
saved_fns = ""
try:
if isinstance(form['file'], list):
for f in form['file']:
print f.filename
saved_fns = saved_fns + ", " + f.filename
self.save_file(f)
self.wfile.write(f.value)
else:
f = form['file']
self.save_file(f)
saved_fns = saved_fns + f.filename
self.wfile.write(f.value)
return (True, "File(s) '%s' upload success!" % saved_fns)
except IOError:
return (False, "Can't create file to write, do you have permission to write?")
次に、アップロードされたファイルを保存する次の関数を追加します。
def save_file(self, file):
outpath = os.path.join("", file.filename)
with open(outpath, 'wb') as fout:
shutil.copyfileobj(file.file, fout, 100000)
multiple
最後に、挿入された HTML 内の タグを使用して、一度に複数のファイルをアップロードできるように HTML フォームを変更します。
これのテストを終了したところですが、正常に動作します。
お役に立てば幸いです