1

私はDjango、python、およびアプリエンジンに取り組んでいます.urllib2を使用してpdfファイルをURLに送信するように教えてください. JSON形式のデータでurllib2を使用してデータを送信することについてSOFに質問があることは知っています.. 前もって感謝します...

4

1 に答える 1

1

Python: HTTP Post a large file with streamingを見たいと思うかもしれません。

メモリ内のファイルをストリーミングするためにmmapを使用する必要があります。次に、それをrequestに設定し、ヘッダーを適切な MIME タイプに設定します。つまりapplication/pdf、URL を開く前に。

import urllib2
import mmap

# Open the file as a memory mapped string. Looks like a string, but 
# actually accesses the file behind the scenes. 
f = open('somelargefile.pdf','rb')
mmapped_file_as_string = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)

# Do the request
request = urllib2.Request(url, mmapped_file_as_string)
request.add_header("Content-Type", "application/pdf")
response = urllib2.urlopen(request)

#close everything
mmapped_file_as_string.close()
f.close()

Google アプリ エンジンには mmap がないため、ファイルをrequest.FILES一時的にディスクに書き込むことができます。

#f is the file from request.FILES
def handle_uploaded_file(f):
    with open('some/file/name.txt', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

次に、標準のファイル操作を使用して、そこからファイルを直接読み取ります。

もう 1 つのオプションは、StringIOを使用してファイルをメモリ内に文字列として書き込み、それを に渡すことurlib2.requestです。これは、ストリームを使用する場合と比較して、マルチユーザー環境では非効率になる可能性があります。

于 2012-10-26T08:54:44.593 に答える