Javascript Blob anchortag下载产生损坏的文件

yop*_*mer 5 javascript anchor blob file download

下面的代码下载了一个无法打开(损坏)的文件,我完全不知道为什么.我已经在很多方面尝试了这个但它永远不会工作,它总是会产生一个损坏的文件.原始文件不是问题,因为它打开正常.我正在尝试打开mp4,mp3和图像文件.

//$scope.fileContents是一个字符串

$scope.fileContents = $scope.fileContents.join(",");
        var blob = new Blob([$scope.fileContents], {type: $scope.file.fileDetails.type});
        var dlURL = window.URL.createObjectURL(blob);
        document.getElementById("downloadFile").href = dlURL;
        document.getElementById("downloadFile").download = $scope.file.fileDetails.name;
        document.getElementById("downloadFile").click();
        window.URL.revokeObjectURL(dlURL);
Run Code Online (Sandbox Code Playgroud)

小智 7

您需要使用ArrayBuffer将文件内容下载为二进制文件,例如

$http.get(yourFileUrl, { responseType: 'arraybuffer' })
    .then(function (response) {
        var blob = new Blob([response.data], {type: $scope.file.fileDetails.type});
        // etc...
    });
Run Code Online (Sandbox Code Playgroud)


资料来源:

  • 如果字节数组来自数据库怎么办?我面临同样的问题,但在我的情况下,字节数组直接从数据库传递到javascript函数 (2认同)