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