如何使用python flask restfull返回json文件?
我试图用flask restfull和send_file在json对象中发送两个文件 当我尝试访问客户端上的json对象时,出现以下错误:如何使用python flask restfull返回json文件?,python,json,flask,flask-restful,Python,Json,Flask,Flask Restful,我试图用flask restfull和send_file在json对象中发送两个文件 当我尝试访问客户端上的json对象时,出现以下错误: TypeError: Object of type 'Response' is not JSON serializable 这是我在烧瓶应用程序中所做的: class Download(Resource): def get(self): try: return {"file1" : send_file('up
TypeError: Object of type 'Response' is not JSON serializable
这是我在烧瓶应用程序中所做的:
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 我觉得你的答案太宽了。但是,要返回json对象,请导入json及其object.json() 或者您可以从flask导入json库
from flask import jsonify
def myMethod():
....
response = jsonify(data)
response.status_code = 200 # or 400 or whatever
return response
我觉得你的答案太宽了。但是,要返回json对象,请导入json及其object.json() 或者您可以从flask导入json库
from flask import jsonify
def myMethod():
....
response = jsonify(data)
response.status_code = 200 # or 400 or whatever
return response
如果我只对一个文件执行相同的操作,而不将send_file()包装在{}中,那么我可以使用java脚本在前端访问该文件 你是说:
return send_file('path/to/file.png')
这是可行的,因为Flask的send_file
函数实际上返回一个响应
对象
这也是有效代码:
在这里,您将返回一个字典,其中包含键'message'
和值'File not found!'代码>。Flask将把它变成一个响应
对象,状态代码为404
那本词典是自动命名的
当您尝试返回此文件时:
return {"file1" : send_file('uploads/kode.png')}, 200
然后对send\u file
返回的响应
对象进行jsonified,因此出现异常:
TypeError:Response类型的对象不可JSON序列化
实现这一点的显而易见的方法是,前端应该为每个映像向服务器发出单独的请求,传递Flask route函数应该使用的某种ID来计算文件路径,然后最终:return sendfile(filepath)
如果您真的想在一个JSON响应中发送多个图像,您可以查看并生成一个可以JSON序列化的数据uri字符串。但是,除非您确实需要将该数据作为JSON传递,否则前一个选项可能是go-to
如果我只对一个文件执行相同的操作,而不将send_file()包装在{}中,那么我可以使用java脚本在前端访问该文件
你是说:
return send_file('path/to/file.png')
这是可行的,因为Flask的send_file
函数实际上返回一个响应
对象
这也是有效代码:
在这里,您将返回一个字典,其中包含键'message'
和值'File not found!'代码>。Flask将把它变成一个响应
对象,状态代码为404
那本词典是自动命名的
当您尝试返回此文件时:
return {"file1" : send_file('uploads/kode.png')}, 200
然后对send\u file
返回的响应
对象进行jsonified,因此出现异常:
TypeError:Response类型的对象不可JSON序列化
实现这一点的显而易见的方法是,前端应该为每个映像向服务器发出单独的请求,传递Flask route函数应该使用的某种ID来计算文件路径,然后最终:return sendfile(filepath)
如果您真的想在一个JSON响应中发送多个图像,您可以查看并生成一个可以JSON序列化的数据uri字符串。但是,除非您确实需要将该数据作为JSON传递,否则前一个选项可能是go to.什么是“文件的JSON”?您希望用户以您问题中的代码收到什么样的响应?如果我只对一个文件执行相同的操作,而不将send_file()包装在{}中,我可以使用java脚本在前端访问该文件。什么是“文件的json”?您希望用户以您问题中的代码收到什么样的响应?如果我只对一个文件执行相同的操作,而不将send_file()包装在{}中,我可以使用java脚本在前端访问该文件。感谢您的解释。为什么我不使用base64编码?来自前端的Api调用代价高昂。感谢您的解释。为什么我不使用base64编码?来自前端的Api调用代价高昂。