python - 从 flaks api 发送字节流给出 unicode 错误
问题描述
我正在尝试将 pdf 文件的字节对象从烧瓶 api 发送到其他烧瓶 api。但是每当我调用 api 时,我都会得到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, 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 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 -
解决方案
推荐阅读
- mysql - 函数 json_object 不存在
- javascript - 未捕获的语法错误:意外的令牌(第一个程序)
- mysql - MySQL:关于 CASES 的棘手查询
- python-3.x - 如何从类中打印字符串?
- python - 在 Python 中从 XML 创建邻接矩阵
- asp.net - 带有 ASP.NET 的 Yahoo OAuth 给出错误 502
- php - sql数据库添加数据后php重新建表
- office-js - 在 Office 客户端中侧载 Office JS 加载项后立即在后台自动运行代码
- pyvmomi - 使用 PyVmomi 获取 VM 文件
- python-3.x - 熊猫数据框组检查一列的唯一值的数量是否为一但排除空字符串