这里我有一个flask函数,它返回图像:
@app.route("/getResults", methods=['GET'])
def get_results():
print(request)
job_key = request.args["id"]
filename = '/home/pat/projets/giftmaker/webapp/public/workingDir/1/test.png'
return send_file(filename, mimetype='image/png')
然后我尝试去读它:
export function Download ({jobID}) {
const [img, setImg] = useState(null);
function test() {
const params = new URLSearchParams([['id', jobID]]);
axios.get('/getResults', {params}, {responseType: "arraybuffer"})
.then((response) => {
setImg(Buffer.from(response.data, "binary").toString("base64"))
})
.catch((e) => {
console.log(e)
})
};
return(
<div>
<button onClick={test}> Display </button>
<img src={`data:image/png;base64,${img}`} />
</div>
)
};
这是我从get请求中得到的响应:
�PNG
�
���
IHDR���h���h�����������=�zTXtRaw profile type exif��xڥ�Y��6�m��Vd�H
实际上比那要长,但你会明白的...
我已经尝试了这么多的东西,我发现从stackoverflow,但似乎没有工作。我正在测试一个小图像,但它应该是一个gif,可以是1- 5 Mb
从flask.send_file发送的数据是二进制的,对吗?
1条答案
按热度按时间zzwlnbp81#
是的,从
send_file
返回的数据是二进制的。有多种原因可能会出错:我让它这样工作:
api.py
App.js