2
私は、Pythonを使用してAPIを介してbackblazeにファイルをアップロードしようとしています。Pythonを使用してAPIを使用してAPIを使用して画像をアップロードする
以下は、私が使用したコードスニペットです。
import json
import urllib2
import hashlib
upload_url = "" # Provided by b2_get_upload_url
upload_authorization_token = "" # Provided by b2_get_upload_url
file_data = "Now, I am become Death, the destroyer of worlds."
file_name = "oppenheimer_says.txt"
content_type = "text/plain"
sha1_of_file_data = hashlib.sha1(file_data).hexdigest()
headers = {
'Authorization' : upload_authorization_token,
'X-Bz-File-Name' : file_name,
'Content-Type' : content_type,
'X-Bz-Content-Sha1' : sha1_of_file_data
}
request = urllib2.Request(upload_url, file_data, headers)
response = urllib2.urlopen(request)
response_data = json.loads(response.read())
response.close()
これは正常に動作し、Web UIを通じてファイルにアクセスできます。
しかし、下記のようにiが
with open('test.jpg', 'rb') as content_file:
file_data = content_file.read()
file_name = "test.jpg"
content_type = "b2/x-auto"
(他のすべての部分はコード上記と同じである)コードを変更することによって画像をアップロードしようとしたとき
File "/usr/lib/python2.7/httplib.py", line 848, in _send_output
msg += message_body
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
以下に示すように、エラーを発生させ私はbase64で画像コンテンツをエンコードしても、画像は公開リンクからアクセスできません。これを克服する他の方法はありますか?
は、コーデックライブラリを使用してみてください、requestsを使用してこれを解決しました。 codecs.open( 'test.jpg'、 'rb'、encoding = 'utf-8')を使用して 'open( 'test.jpg'、 'rb')as..'を'に変更します。 ' – n1c9
@ n1c9私が' UnicodeDecodeError: 'utf8'コーデックが位置0のバイト0xffをデコードできないという別のエラーが出たとき:無効な開始バイト ' – midhun