我正在从JSP内的script
发送一个AJAX POST请求。
内部控制器我从该位置读取文件并返回字节数组。
fileInputStreamReader = new FileInputStream(file);
byte[] bytes = new byte[(int) file.length()];
fileInputStreamReader.read(bytes);
filedata = Base64.getEncoder().encode(bytes);
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
response.setContentLength((int) file.length());
fileInputStreamReader.close();
然后在前端我正在装箱一个不可见的链接并下载文件。
$.ajax({
url : url,
type : 'POST',
data : nodedata,
beforeSend : function(jqXHR, settings) {
setCsrfHeader(jqXHR);
},
success : function(data) {
hideLoader();
/* window.open("data:"+contentType+";base64, " + data); */
var uri = 'data:'+contentType+';base64,' + data;
var downloadLink = document.createElement("a");
downloadLink.href = uri;
downloadLink.download =atcName ;
document.body.appendChild(downloadLink);
downloadLink.click();
$("#Success").html("File download successful");
$("#error").hide();
$("#Success").show();
document.body.removeChild(downloadLink);
},
error : function(e) {
hideLoader();
$("#error").html(ERROR_SERVER_RESPONSE);
$("#Success").hide();
$("#error").show();
alert(ERROR_SERVER_RESPONSE);
}
});
问题是只有大文件大小> ~50mb。我该怎么办?
答案 0 :(得分:0)
我可能错了,但我建议检查是否没有缓存问题,因为超时应该触发错误回调。
您应该在请求中添加aparameter cache : false,
,或者更好的恕我直言,您可以阻止缓存所有进一步的Ajax调用regardless of which jQuery method you use(ajax, get...)。
$.ajaxSetup({ cache: false });