首页 > 解决方案 > 在 django restful 框架中测试上传图像时出现 base64 编码错误

问题描述

我正在编写单元测试,试图上传图像并对其进行 base64 编码。但是编码与预期不同。

这是我的tests.py

    with open('tests/image.jpg', 'rb') as image:
        r = self.client.post('/images', {'image': image}, format='multipart')

这是我的意见.py

def post(self, request):
    image = request.FILES['image']
    base64_str = base64.b64encode(image.read()).decode('utf-8')

base64_str 原来是这样的7f7NCd0Aw29mVx......

在 python 脚本中执行

with open('tests/image.jpg', 'rb') as f:
    print(base64.b64encode(f.read()).decode('utf-8'))

输出是/9j/4AAQSk......

我想编码有问题。所以有什么问题?

标签: pythondjangodjango-rest-frameworkbase64

解决方案


你确定你不只是使用编码,而不是在 base64.b64encode 中解码?编码后,您可以使用 b64decode 进行解码,我认为应该是:

with open('tests/image.jpg', 'rb') as f:
     encoded_photo = base64.b64encode(f.read()).decode('utf-8'))
     decoded_photo = base64.b64decode(f.read()).decode('utf-8'))

推荐阅读