繁体   English   中英

为什么这个 API POST 方法无法识别我的 base64 编码图像?

[英]Why isn't my base64-encoded image being recognized by this API POST method?

我正在尝试使用 API 上传 JPEG 图片。 这是方法信息:添加文件

您可以看到它需要两个参数:“name”和“file_data”(文件的 base64 编码内容)。

到目前为止,这是我所在的位置:

file_data = base64.b64encode(requests.get(images[0]).content) 
response = client.fileManager.upload({"name": "test.jpg", "file_data": 'data:image/jpeg;base64,' + str(file_data)})
print(response)

我收到了这个错误响应:

"Invalid Resource","status":400,"detail":"Error parsing image: The uploaded file is not an image, but has an image extension."

我最初只是尝试使用 "file_data": str(file_data) 并且收到了完全相同的错误,所以我尝试了一个数据 URI,如您所见。 另外,如果我用“test.txt”替换“test.jpg”,那么上传 function 工作正常,所以这一定意味着问题出在 file_data 上。

尝试在最后添加 .decode('utf8') 。

file_data = base64.b64encode(requests.get(images[0]).content).decode('utf8')

我在将 matplotlib 图转换为 PNG 时添加了这一点,如下所示。

# Convert plot to PNG image
pngImage = io.BytesIO()
FigureCanvas(fig).print_png(pngImage)

# Encode PNG image to base64 string
pngImageB64String = "data:image/png;base64,"
pngImageB64String += base64.b64encode(pngImage.getvalue()).decode('utf8')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM