我正在尝试使用s3在我的网站上获取图像
我正在尝试使用get_object()访问图像对象
我想返回的对象部分是Body,它的类型是StreamingBody。 我想将StreamingBody转换为字符串以返回它
这是我的密码:
@api_view(['GET'])
def get_image(request, image):
"""Get image link"""
key = "media/" + str(image)
s3 = boto3.client('s3', config=Config(signature_version='s3v4', region_name=settings.AWS_S3_REGION_NAME))
obj = s3.get_object(Bucket=settings.AWS_STORAGE_BUCKET_NAME, Key=key)
return Response(obj['Body'].read().decode('utf-8'))
url.py
from django.urls import path
from store import views
urlpatterns = [
path('images/<str:image>', views.get_image),
]
obj['Body'].read()
返回我试图在utf-8中解码的字节
运行obj['Body'].read().decode('utf-8')
时,出现以下错误:UnicodeDecodeError:'utf-8'编解码器无法解码位置0中的字节0xff:无效的开始字节
提前感谢您的帮助
更新
我必须以HttpResponse的形式返回图像数据,并且不进行编码:
image_data = obj['Body'].read()
return HttpResponse(image_data, content_type="image/jpeg")
这取决于你到底想做什么:
显示图像:
显示
base64
{a1}看起来您正在使用Django REST framework,因此如果要返回JSON,则必须使用
bas64
对其进行编码,例如:相关问题 更多 >
编程相关推荐