2011-12-05 9 views
0

どのように私はPythonのファイルを使用してPOST要求を機械化することができますが、既存のフォームを使用せずに、単に "青から"ファイルをPOSTする必要があります。 stackoverflow上のファイルアップロードのいくつかの例がありますが、すべてフォームにファイルを添付することに関連しています。PythonでファイルをPOSTするにはどのようにしてフォームを作成しないのですか?

Content-Length: 218853 
Content-Type: application/octet-stream 
Cookie: some-cookie-data 

とPOSTデータディスクからのファイルの内容だけで:

は私だけのようなヘッダを持つPOSTリクエストを生成する必要があります。

ブラウザセッションのCookieを保存する必要があります。返信して処理する必要があります。これは、一部のJSONを含むContent-Type text/plain;になります。

答えて

2

編集: あなたは機械化の例を探していると言いました。私は機械化したユーザーではありませんが、urllib2 API全体をサポートしています。 Send file using POST from a Python script

あなたはあなたのようなHTTPトランザクションを作っているポストを作成する場合:これはSO助けになるだろう答えそれはどのようなので

POST /path/to/script HTTP/1.0 
User-Agent: UserAgent/1.0 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 7 

hello=world 

だから、常に「形」に送っています投稿要求はデータを受信します。

あなたがしたいと思うのは、あなたが投稿しているスクリプトがデータを期待していることです(フォームのname属性は、通常、キー=値のペアリングに必要なキーです)。投稿リクエストを作成します。

正しいエンコーディング(マルチパートのMIME)を使用していることと、ヘッダーの正しいContent-Lengthを計算していることを確認してください。

0

私はこれを行うために機械化コードを開いてしまったのです。

# Mechanize 
    from mechanize import Browser, urlopen, Request 

    # Submit it! 
    image_file = open(image_filename) 
    image_data = image_file.read() 

    request  = Request(url, image_data, {'Content-Type': 'application/octet-stream'}) 

    response  = urlopen(request) 

P.S. LOL、私は長いこと前にこのことについてブログに書きました:

http://theremichaelwilson.wordpress.com/2011/03/26/posting-a-file-with-mechanize-and-python/

関連する問題