Javascript 二进制数据的createObjectUrl失败

Javascript 二进制数据的createObjectUrl失败,javascript,Javascript,在我的javascript中,我有一个base64编码的pkcs12对象,我想作为下载链接提供它。要下载的Pkcs12(pfx)文件是二进制数据 因此,我对该对象进行了解码,并尝试从中创建objectUrl: var bin = atob(pkcs12); var blob = new Blob([bin], { type : 'application/x-pkcs12' }); $scope.pkcs12Blob = (window.URL || window.webkitUR

在我的javascript中,我有一个base64编码的pkcs12对象,我想作为下载链接提供它。要下载的Pkcs12(pfx)文件是二进制数据

因此,我对该对象进行了解码,并尝试从中创建objectUrl:

var bin = atob(pkcs12);
var blob = new Blob([bin],
        { type : 'application/x-pkcs12' });
$scope.pkcs12Blob = (window.URL || window.webkitURL).createObjectURL( blob );
问题是,下载的文件比原始二进制数据大,无法识别为pkcs12。看起来好像文件中引入了一些utf-8/unicode内容

如果我向createObjectURL提供原始的base64编码数据并下载base64编码文件,我可以解码下载的文件并获得有效的p12文件


所以我想知道:createObjectURL如何处理二进制数据?

出于某种原因,createObjectURL不接受二进制字符串,但需要字节数组。这段代码很有魅力:

var bytechars = atob($scope.enrolledToken.pkcs12);
var byteNumbers = new Array(bytechars.length);
for (var i = 0; i < bytechars.length; i++) {
    byteNumbers[i] = bytechars.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], {type: 'application/x-pkcs12'});
$scope.pkcs12Blob = (window.URL || window.webkitURL).createObjectURL( blob );
var-bytechars=atob($scope.enrolledToken.pkcs12);
var byteNumbers=新数组(bytechars.length);
对于(var i=0;i由于某些原因,createObjectURL不接受二进制字符串,但需要字节数组。这段代码很有魅力:

var bytechars = atob($scope.enrolledToken.pkcs12);
var byteNumbers = new Array(bytechars.length);
for (var i = 0; i < bytechars.length; i++) {
    byteNumbers[i] = bytechars.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], {type: 'application/x-pkcs12'});
$scope.pkcs12Blob = (window.URL || window.webkitURL).createObjectURL( blob );
var-bytechars=atob($scope.enrolledToken.pkcs12);
var byteNumbers=新数组(bytechars.length);
对于(var i=0;i
我发现了这个,它非常有效:如果你已经弄明白了,你可以回答你自己的问题我发现了这个,它非常有效:如果你已经弄明白了,你可以回答你自己的问题