从flaks api发送字节流给出unicode错误

问题描述

我正在尝试将 pdf 文件的字节对象从flask api发送到其他flask api。但是每当我对 api 进行 get 调用时,我都会收到 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 10: invalid start byte。 jsonify 方法是否试图解码我的字节流,以及如何将 pdf 文件的字节对象发送到其他 api。

from flask import Flask,jsonify
import pandas as pd
import matplotlib.pyplot as plt

app = Flask(__name__)

@app.route('/')
def home():
    return('home')

@app.route('/convert_bytes')
def byteimage():
    data = pd.DataFrame({'Revenue Type': ['AMC USD','LICENSE USD','SAAS USD','PS FEES USD','CU FEES USD'],'Value': [79_592_370,158_602_448,34_856_410,37_566_036,34_183_293]})
    
    fig = plt.figure(figsize=(10,7))
    plt.pie(data['Value'],labels=data['Revenue Type'])
    plt.savefig('chart.pdf')
    with open('chart.pdf','rb') as file:
        doc = (file.read())
    dic = {'object':doc}
    
    return jsonify(dic)

if __name__ == '__main__':
    app.run(debug=True,host='localhost',port=8123)

输出

Traceback (most recent call last):
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 2464,in __call__
    return self.wsgi_app(environ,start_response)
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 2450,in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 1867,in handle_exception
    reraise(exc_type,exc_value,tb)
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\_compat.py",line 39,in reraise
    raise value
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 1821,in handle_user_exception
    reraise(exc_type,line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\1777304\Downloads\How+Python+Imports+Modules\How Python Imports Modules\example3b\flask_app_pdf\main.py",line 24,in byteimage
    return jsonify(dic)
  File "C:\Users\1777304\PYTHON\lib\site-packages\flask\json\__init__.py",line 370,in jsonify
    dumps(data,indent=indent,separators=separators) + "\n",File "C:\Users\1777304\PYTHON\lib\site-packages\flask\json\__init__.py",line 211,in dumps
    rv = _json.dumps(obj,**kwargs)
  File "C:\Users\1777304\PYTHON\lib\site-packages\simplejson\__init__.py",line 412,in dumps
    **kw).encode(obj)
  File "C:\Users\1777304\PYTHON\lib\site-packages\simplejson\encoder.py",line 298,in encode
    chunks = list(chunks)
  File "C:\Users\1777304\PYTHON\lib\site-packages\simplejson\encoder.py",line 696,in _iterencode
    for chunk in _iterencode_dict(o,_current_indent_level):
  File "C:\Users\1777304\PYTHON\lib\site-packages\simplejson\encoder.py",line 620,in _iterencode_dict
    yield _encoder(value)
 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 10: invalid start byte
127.0.0.1 - - [10/Jun/2021 23:52:36] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1?[0m" 200 -
127.0.0.1 - - [10/Jun/2021 23:52:36] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=jquery.js HTTP/1.1?[0m" 200 -
127.0.0.1 - - [10/Jun/2021 23:52:37] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1?[0m" 200 -
127.0.0.1 - - [10/Jun/2021 23:52:37] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=ubuntu.ttf HTTP/1.1?[0m" 200 -
127.0.0.1 - - [10/Jun/2021 23:52:37] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1?[0m" 200 -
127.0.0.1 - - [10/Jun/2021 23:52:37] "?[37mGET /convert_bytes?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1?[0m" 200 -

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)