sor*_*ike 6 python django storage django-rest-framework
我需要从不同的对象存储桶下载图像对象,并通过Django Rest Framework将其发送给用户.
我有类似的东西:
if request.method == 'GET':
# Get object using swiftclient
conn = swiftclient.client.Connection(**credentials)
container, file = 'container_name', 'object_name'
_, data = conn.get_object(container, file)
# Send object to the browser
return Response(data, content_type="image/png")
Run Code Online (Sandbox Code Playgroud)
data 变量包含字节类型.
测试时我收到错误:
'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
什么可以解决这个问题?
如果您希望将图像直接通过Django Rest Framework传递给用户,那么使用它可能更合适HttpResponse.
from django.http import HttpResponse
...
return HttpResponse(data, content_type="image/png")
Run Code Online (Sandbox Code Playgroud)
Django Rest Framework自己Response会尝试渲染二进制数据,这可能会导致您看到的编码问题.
您需要导入 Base64 并将字节数据转换为 Base64 编码格式,才能解决该问题。
import base64
data = base64.b64encode(data)
Run Code Online (Sandbox Code Playgroud)
==== 或 =====
我尊重@Will Keeling 的回答,并希望在我的帖子中也有这个回答。
from django.http import HttpResponse
return HttpResponse(data, content_type="image/png")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
644 次 |
| 最近记录: |