我在使用ajax从我的应用程序下载文件时遇到问题。情况就是这样。
我对我的下载网址进行了 Ajax POST 调用。此ajax长度 3.3MB (我返回的文件大小)。无论如何,当我从浏览器以正确的方式访问它时,我仔细检查了这个url返回我的文件。
要下载它,我在成功时使用此代码:
success: function(data){
var blob=new Blob([data]);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download=[[${videoInfo.title}]]+".mp3";
link.click();
link.remove();
},
如果我打印blob.size
o看到下载的文件sie,它来自 6.6MB (实际大小的两倍),我无法播放mp3文件,因为它已损坏。如果我直接在浏览器中输入我的URL,我可以下载正确版本的文件。这是我的服务器代码:
Path path = Paths.get(target.getAbsolutePath());
result = Files.readAllBytes(path);
ServletOutputStream sos = response.getOutputStream();
response.setContentLengthLong(result.length);
response.setHeader("Content-Disposition",
"attachment; filename='" + downloadInfo.getVideo().getTitle() + ".mp3'");
response.setContentType(MP3_MIME_TYPE);
sos.write(result);
sos.flush();
看起来Blob对象转换有什么问题,但这是我第一次使用这个对象,也许我错过了一些东西。
对此有何帮助?