烧瓶上传python-base64图像

时间:2020-08-20 16:32:14

标签: javascript python flask base64

我正在尝试使用Flask将base64图像(用Python编码)上传到我的Web应用程序。 我得到了编码的图像,但是在修改图像元素的src时出现错误。

Ajax:

$.ajax({
    dataType: "json",
    type: 'POST',
    url: getWebAppBackendUrl("return_cam"),
    data: {
        image_bytes: img_b64
    },
    success: function (filter_bytes) {
        let data = filter_bytes.heatmap
        document.getElementById("cam").src = "data:image/png;base64," + data;
    }
});

服务器端:

@app.route('/return_cam', methods=['GET', 'POST'])
def return_cam():
    
    img_b64 = request.form.get("image_bytes") #get POST data
    api_result = client.run_function("returnCAM", image=img_b64)
    response = api_result.get("response")
    result_dict = json.loads(response)
    return json.dumps(result_dict)

在控制台中打印时,“数据”变量看起来像这样:

b'ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj/ADj...'

我得到ERR_INVALID_URL。

我猜想这个数据变量需要做一些处理... 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

看起来您需要解码该值。像这样:

    img_b64 = request.form.get("image_bytes")
    img_b64 = img_b64.decode('utf-8')
    #...

不确定client.run_function是否会赞赏这一点,因为您的问题尚不清楚该方法的作用。如果您自己编写,可以将上面的mod放在该函数中,以便正确解码的值按预期在response内结束。