2016-09-28 6 views
2

私はPythonリクエストを使ってPUTメソッドを使ってファイルをアップロードします。Pythonリクエスト、マルチパート/フォームデータリクエストにコンテンツタイプを追加する方法

リモートAPIは、体が属性 のContent-Typeが含まれている場合にのみ、すべての要求を受け入れる:私は/要求ヘッダーとしてではないのpng MAGE私はPythonの要求を使用する場合が見つからないため、属性が

、要求は拒否しますThis request is rejected on this image

私はプロキシを使用しようとしたと不足している属性を追加した後、それは

強調表示されたテキスト

01を参照してくださいを受け入れました

Valid request

しかし、プログラムで追加することはできません。どうすればいいですか?

そして、これは私のコードです:[ドキュメント]を1として

files = {'location[logo]': open(fileinput,'rb')} 

ses = requests.session() 
res = ses.put(url=u,files=files,headers=myheaders,proxies=proxdic) 
+0

PUTは、単一のオブジェクトが含まれ、 'ファイル名または任意の追加のkey' – dsgdfg

+0

APIを拡張するためのPOSTを必要とするだけでPUTを可能にし、要求 –

答えて

1

[1、あなたはタプル、ファイル名およびコンテンツタイプに2つの引数を追加する必要があります。

#   filed name   filename file object  content=type 
files = {'location[logo]': ("name.png", open(fileinput),'image/png')} 

古い関連する問題のexplaiにおける今後の参考のため

In [1]: import requests 

In [2]: files = {'location[logo]': ("foo.png", open("/home/foo.png"),'image/png')} 

In [3]: 

In [3]: ses = requests.session() 

In [4]: res = ses.put("http://httpbin.org/put",files=files) 

In [5]: print(res.request.body[:200]) 
--0b8309abf91e45cb8df49e15208b8bbc 
Content-Disposition: form-data; name="location[logo]"; filename="foo.png" 
Content-Type: image/png 

�PNG 

IHDR��:d�tEXtSoftw 

this comment:あなたは、以下の例のサンプルを見ることができますNSすべてのバリエーション:

# 1-tuple (not a tuple at all) 
{fieldname: file_object} 

# 2-tuple 
{fieldname: (filename, file_object)} 

# 3-tuple 
{fieldname: (filename, file_object, content_type)} 

# 4-tuple 
{fieldname: (filename, file_object, content_type, headers)} 
+0

あたりため、単一のファイルが働いて、おかげで –

関連する問題