(大)ランダムなコンテンツをHTTPエンドポイントにアップロードします。私はそれを作成し、それを送信し、再び使用されることはありません。だから、私は一時ファイルに保存し、{ 'file':open() }
を使ってスキップしたいと思います。私はmultipartの代わりにform-urlencodedも使う必要があります。
私はpycurlとそのREADFUNCTIONオプションを使用していましたが、pycurlに依存したくありません。urllib2上流への書き込み
これを実現することは可能ですか?urllib2?
私はこのコードを持っている:
def upload():
url = 'http://localhost:9999/'
values = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : open(file).read() }
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
をしかし、そのままで値が定義されている場合、ファイル全体が読み込まれます。
ファイルのサイズが1Gbだった場合、これはうまくいかない(私が誤解しない限り)。また、ランダムに埋め込まれた1Gbファイルを作成する必要はありません。
[OK]をダニエルが述べたように、私はたStringIOをサブクラス化することができますし、(読み込み中にランダムなデータを作成する)が、どのように私はurllib2のは(読み込みをお願いしますん)チャンクアップロード中一度にすべてをメモリに入れるのではなく、より具体的にするための試みにおいて
、私が本当に欲しいと、私は、その後に書き込みができることをJavaでurlConnectionInstance.getOutputStream()
のようなものです。それは実際に私はあなたが困難を抱えている場所を正確にわからないんだけど、それはあなたのように聞こえる...
Danielによって提案されたStringIOと一緒に、これはまさに私が探していたものです。質問で_urllib2_を指定したにもかかわらず、全体的な点は_urllib2_ではなく標準ライブラリを使用していました(私の悪い)。ありがとう! –