0

cgi から python 2.4 を実行しており、python API を使用してクラウド サービスにアップロードしようとしています。PHP では、$_FILE 配列に「tmp」要素が含まれています。これは、必要な場所に配置するまでファイルが存在する場所です。Pythonで同等のものは何ですか?

私がこれをしたら

fileitem = form['file']

fileitem.filenameファイルの名前です

fileitem を出力すると、配列には単にファイル名とファイル自体のように見えるものが含まれます。

物事をストリーミングしようとしていますが、php API を使用するときに tmp の場所が必要です。

4

2 に答える 2

2

ファイルは実際のファイルですが、cgi.FieldStorage作成されるとすぐにリンクが解除されるため、ファイルを開いたままにしておく限り存在し、ファイル システムに実際のパスがなくなります。

ただし、これを変更することはできます...

メソッドを拡張しcgi.FieldStorageて置換しmake_file、ファイルを好きな場所に配置できます。

import os
import cgi

class MyFieldStorage(cgi.FieldStorage):
    def make_file(self, binary=None):
        return open(os.path.join('/tmp', self.filename), 'wb')

FieldStorageまた、オブジェクトが 1000B を超える受信をした場合にのみ実際のファイルを作成することにも注意する必要があります (それ以外の場合はcStringIO.StringIO) 。

編集cgiモジュールは実際にtempfileモジュールでファイルを作成するため、多くの詳細が必要な場合はチェックしてください。

于 2009-02-18T19:46:11.217 に答える
1

これが私のサイトから取られたコードスニペットです:

h = open("user_uploaded_file", "wb")
while 1:
    data = form["file"].file.read(4096)
    if not data:
        break
    h.write(data)
h.close()

お役に立てれば。

于 2009-02-18T18:36:34.817 に答える