2017-03-06 6 views
0

私は、画像をbase64文字列としてエンコードし、その文字列をPOST要求のパラメータとしてAPIサーバーに送信するプログラムを開発しています。それは非常に小さいイメージ(1kb以下)で動作しますが、54kbのテストイメージを使用しようとすると失敗します。 APIサーバーからの応答がありません。私はこれが可能であることを知っています、他の開発者はそれを働かせていますが、私は何が間違っているのか分かりません。ここで問題になっている部分のコードです:POST要求としてのファイルが大きいですか?

dlimage = requests.get(imageURL, stream=True, timeout=10) 
encodedImage = base64.encodestring(dlimage.content) 
imagequery = {"request":"saveProductPicture","sessionKey":sessionKey,"clientCode":clientCode,"productID":productID,"picture":encodedImage} 
response = requests.request("POST", url, params=imagequery, stream=True, timeout=10) 
+1

あなたのテキストにはPOSTと書かれていますが、あなたのコードはGETと言います。どちらの方法を実際に使用していますか? – jwodder

+0

私の間違い。修正されたコード。 –

答えて

0

あなたが使っているものをウェブサーバーに言及していないが、それはおそらく、サーバーが要求サイズの制限を課しているのです。

Apacheを使用している場合は、LimitRequestBodyを参照してください。

nginxについては、client_max_body_sizeを参照してください。

lighttpdについては、server.max-request-sizeを参照してください。

unicorn(dev server)の設定が見つかりません。

いずれにしても問題が解決しない場合は、サーバーのログファイルを確認してください。 Python Webフレームワークにも設定があるかもしれませんが、使用しているものを指定していません。私の経験上、通常は制限を課すのは外部Webサーバーです。

0

私は私の問題を理解しました。 paramsを使用すると、本質的に要求がGETとして扱われます。 POST要求の場合は、paramsの代わりにデータを使用する必要があります。

関連する問題