后端文件流转发代码
public static void doGetFile(HttpServletResponse httpResponse,String url) {
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
byte[] result = null;
try {
httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(35000)
.setConnectionRequestTimeout(35000)
.setSocketTimeout(60000)
.build();
if (summaryVer != null) {
httpGet.setHeader("sd-summary-ver", summaryVer);
httpGet.setHeader("sd-summary", summary);
}
httpGet.setConfig(requestConfig);
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
byte[] buffer = new byte[1024*4];
int n = 0;
ServletOutputStream outputStream = httpResponse.getOutputStream();
while (-1 != (n = content.read(buffer))) {
outputStream.write(buffer, 0, n);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != response) {
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != httpClient) {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
前端代码
function downloadFile() {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'url(下载接口地址)', true);
xhr.responseType = "blob";
xhr.onload = () => {
openProgressBar("close", true, "下载");
const blob = xhr.response;
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.download="数据列表.xls"
a.href = blobUrl;
a.target = '_blank';
a.click();
}
var params2 = {"flowType":3,"pageNum":1,"pageSize":10}
xhr.setRequestHeader("Content-Type","application/json;charset=UTF-8");
xhr.send(JSON.stringify(params2));
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)