Blob对象javascript重复它们的值

时间:2018-01-07 12:32:22

标签: javascript ajax file download

我在使用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();
},

https://i.imgur.com/I24touY.png

如果我打印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对象转换有什么问题,但这是我第一次使用这个对象,也许我错过了一些东西。

对此有何帮助?

0 个答案:

没有答案