ValueError: embedded null byte
s3応答をb64dataに変換しようとしているときに取得しています
urllib.request
同じパッケージで試してみましたValueError: embedded null byte
がスローされます
s3_response_object = settings.S3_CLIENT.get_object(Bucket=settings.BUCKET_NAME, Key='image_name.png')
object_content = s3_response_object['Body'].read()
with open(object_content, 'rb') as img:
b64_image = base64.b64encode(img.read())
これは、事前に署名されたURLで試行された他のコードです
signed_uri = settings.S3_CLIENT. \
generate_presigned_url(ClientMethod='get_object',
Params={'Bucket':settings.BUCKET_NAME,
'Key': 'image_name.png'})
contents = urllib.request.urlopen(signed_uri).read()
with open(contents, "rb") as image_file:
b64_image = base64.b64encode(image_file.read())
どちらのメソッドもこのエラーをスローします
with open(object_content, 'rb') as img:
ValueError: embedded null byte
ただし、事前に署名されたURIを使用して画像を開くことはできますが、画像はb64dataとして必要です。
.read()を2回呼び出す必要はありません。object_contentのタイプはバイトです
次のようなことを行います。
signed_uri = settings.S3_CLIENT. \
generate_presigned_url(ClientMethod='get_object',
Params={'Bucket':settings.BUCKET_NAME,
'Key': 'image_name.png'})
contents = urllib.request.urlopen(signed_uri).read()
b64_img = base64.b64encode(contents)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加