python - 在 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......
我想编码有问题。所以有什么问题?
解决方案
你确定你不只是使用编码,而不是在 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'))
推荐阅读
- javascript - Express MongoDB - 在通过另一个查询自定义数据之前插入一个文档
- java - 可以同时拥有 Spring @RequestBody 和 HttpEntity 吗?
- swift - 如何更改 UIImagePickerController 中“相机胶卷”的颜色?
- python-3.x - cv2.error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:325: 错误: (-215) size.width>0 && size.height>0 in function cv::imshow
- python - Numpy 跨矩阵计算梯度
- python - 无法读取行文本文件python
- search - 片段上的Android搜索视图
- javascript - 在 JavaScript 中,有没有办法获取闭包参数
- node.js - 尝试编写一个 Node.js 多层应用程序,就像我在 c# 中使用的那样
- ignite - apache ignite 节点无法加入集群