Angular 13 - 从 ByteArray 数据下载文件



我从我的服务器中获取一个包含文件内容的byte[]文件。我知道名字和content-type.到目前为止,我已经尝试了以下方法来下载文件:

const a = document.createElement('a');
document.body.appendChild(a);
a.style.display = 'none';
const file = new Blob([content], {type: 'text/plain'});
const url = window.URL.createObjectURL(file);
a.href = url;
a.download = "test.txt";
a.click();
window.URL.revokeObjectURL(url);

但是此解决方案仅下载包含二进制内容的文本文件。如何使用 JavaScript/Typescript 在客户端将二进制数据转换为相应的文件类型?谢谢!

您可以使用文件保护程序

import { saveAs } from 'file-saver';

const file = new Blob([content], {type: 'text/plain'});
FileSaver.saveAs(file, "test.txt");
saveByteArray(bytes, type) {
  var blob = new Blob([bytes],{type:type});
  var link = document.createElement('a');
  link.href = window.URL.createObjectURL(blob);
  link.download = "fileName";
  link.click();
}

 c#.net:
 public byte[] DocContent { get; set; }
Angular: 
DocContent:ArrayBuffer;
typescript: 
var content= this.base64ToArrayBuffer(response.DocContent);
        var blob = new Blob([content], { type: response.ContentType });
base64ToArrayBuffer(base64: any): ArrayBuffer {
    var binary_string = window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
      bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
  }

最新更新