14

ユーザーがファイルをアップロードできるシンプルな Web ページが必要です。それを行う最も簡単な方法は何でしょう。

開始方法SimpleHTTPServerは知っていますが、を使用してファイルをアップロードする方法がわかりませんSimpleHTTPServer。それが可能かどうかさえわかりません。

CGIを使用してファイルをアップロードするためのコードをいくつか見つけましたが、コマンドラインでこのコードを実行すると、画面にHTMLコードを印刷するだけです。

4

2 に答える 2

4

私はまだ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 フォームを変更します。

これのテストを終了したところですが、正常に動作します。

お役に立てば幸いです

于 2016-06-01T05:59:40.467 に答える