我实现了Jersey REST服务来下载zip文件。 现在,我想在前端使用axios下载zip文件。 在PC Chrome浏览器中一切正常,但在iPad上使用Safari尝试时,它会打开一个名为“未知”的标签。
我搜索了一些文章,并提到这可能与IOS Safari兼容性有关。 例如https://caniuse.com/#feat=download
但是,我也想知道是否有任何方法可以将下载的文件显示为“ safari”的“ file.zip”。
下面是我的代码
后端:
@GET
@Path("/getTestingReport")
@Produces("application/zip")
public Response getTestingReport() throws Exception {
// set file (and path) to be download
File file = new File("C:/Users/abc/Desktop/test.zip");
ResponseBuilder responseBuilder = Response.ok((Object) file);
responseBuilder.header("Content-Disposition", "attachment; filename=\"MyJerseyZipFile.zip\"");
return responseBuilder.build();
}
前端:
axios.get("report/getTestingReport").then((response) => {
console.log("response", response)
var blob = new Blob([response.data], { type: "application/zip" });
const url = window.URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.zip');
document.body.appendChild(link);
link.click();
}).catch((error) => {
console.error("error response", error.response)
});
我有什么建议吗?