gpt4 book ai didi

python - 如何使用 python Flask-restful 返回 json 文件?

转载 作者:行者123 更新时间:2023-12-02 03:05:56 26 4
gpt4 key购买 nike

我正在尝试使用 Flask Restfull 和 send_file 在 json 对象中发送两个文件。

当我尝试访问客户端的 json 对象时,出现此错误:

TypeError: Object of type 'Response' is not JSON serializable

这就是我在我的 flask 应用程序中所做的:

class Download(Resource):
def get(self):
try:
return {"file1" : send_file('uploads/kode.png'), "file2" : send_file('uploads/kode.png')}, 200
except:
return {"message" : "File not found!"}, 404

如何返回 json 文件?

最佳答案

If I do the same thing with only one file without wrapping the send_file() in {}, I can access that file on the front end with java script.

你的意思是:

return send_file('path/to/file.png')

这是可行的,因为 Flask 的 send_file 函数实际上返回一个 Response 对象。

这也是有效代码 (as of flask version 1.1.0) :

return {"message" : "File not found!"}, 404

这里您将返回一个字典,其中键为'message',值'File not find!'。 Flask 会将其转换为 Response 对象,状态代码为 404

该词典自动 json 化 (as of flask version 1.1.0) .

当您尝试返回此信息时:

return {"file1" : send_file('uploads/kode.png')}, 200

send_file 返回的 Response 对象随后被 json 化,因此出现异常:

TypeError: Object of type 'Response' is not JSON serializable


实现这项工作的明显方法是前端应该为每个图像向服务器发出单独的请求,并传递 Flask 路由函数应该的某种 ID obtain并用于计算文件路径,然后最终:return sendfile(filepath)

如果您确实想在一个 JSON 响应中发送多张图像,您可以查看 base64 encoding the image并制作一个可以 JSON 序列化的 data_uri 字符串。但是,除非您确实需要将数据作为 JSON 传递,否则前一个选项可能是首选。

关于python - 如何使用 python Flask-restful 返回 json 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com