除了我读过的here之外,我对JavaScript中的Blob对象没有任何先验知识,但需要使用它们将一串二进制数据转换为.xls文件,然后我将其提供给用户。问题是,当我构建一个blob,获取位置,并打开文件来查看它时,它开始说
您尝试打开的文件格式不同 由文件扩展名指定。验证文件不是 在打开文件之前损坏并来自受信任的来源。
(我知道这些数据不正确,因为当我正常提交表单时,我会正确地获取文件并且没有这个问题)
这是在ajax调用中完成的,而success函数参数数据是二进制数据。
$("#fileForm").submit(function(){
var fileData = $("#fileInputElmt").prop("files")[0];
var data = new FormData();
data.append("upload",fileData);
var url = "process.action?" + $("#fileForm").serialize();
$.ajax({
type: "POST",
url:url,
data:data,
cache:false,
contentType:false,
processData:false,
success:function(data){
var bb = new Blob([data],
{ type: 'application/vnd.ms-excel',endings:'native'});
var bUrl = URL.createObjectURL(bb);
window.open(bUrl,"_self");
hideProgressBar();
},error:function(data){
hideProgressBar();
}
});
return false;
});
我做错了吗?或者有更好的方法吗?