我的反应代码中有一个按钮,当我单击它时,我应该能够下载文件。我在后端使用Python(没有任何框架)。对于反应部分,我认为this链接说明了应该做什么。单击按钮时,我应该进行API调用,并在返回时可以呈现此IFrame组件。另外,在axios呼叫中,另一个答案建议responseType: 'blob'
。我的问题是如果我们要发送文件,后端应该怎么做,让我们假设它只是创建一个文件并返回它。我实际上正在使用一种具有自己的API接口的第三方产品,但是可以使用带有requests
库的示例。
def function_called_From_endpoint():
with open(path) as f:
return {'data': f }
这样的权利吗?
答案 0 :(得分:0)
因此,我通过这种方式使其工作:
def function_called_From_endpoint():
with open(file_path) as f:
data = f.read()
return {"data": data }
和前端:
axios({
url: url, //your url
method: 'GET',
responseType: 'blob', // important
}).then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.txt'); //or any other extension
document.body.appendChild(link);
link.click();
});
根据https://stackoverflow.com/a/53230807/5573241的建议。效果很好。