通过网络 api c# 的响应下载 xml 文件 angular

Download xml file angular by response from web api c#

我想从数据库下载 xml 文件。 byte[] 中的 Web api (C#) return 文件。我如何从客户端站点 (Angular) 读取这些字节并将其转换为 xml 文件?我尝试了 blob 和其他东西,但是当我打开下载的 xml 文件时,出现了这样的奇怪文本:

"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxYdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXIgU2VyaWFsaXplclZlcnNpb249IjIwLjIuNC4wIiBSZWY9". 

但我想得到这样的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
...

我的代码在Angular:

getExportData(id: string): Observable<any> {
    const url = this.buildUrl('/ExportToXML/' + id);
    return this.http.get(url, { responseType: 'blob' });
}
this.service.getExportData(item.Id)
    .subscribe((response) => {
        const element = document.createElement('a');
        const blob = new Blob([response], { type: 'text/xml' });
        const url = URL.createObjectURL(blob);
        element.href = url;
        element.setAttribute('download', 'acl.xml');
        document.body.appendChild(element);
        element.click();
    }, error => {
        console.log(error);
    });

请尽快帮助我。谢谢:-)

字符串以 base64 格式返回。您需要从 base64 对其进行解码。当我解码您提供的示例字符串时,我得到

<?xml version="1.0" encoding="utf-8"?><XtraReportsLayoutSerializer SerializerVersion="20.2.4.0" Ref=

您可以使用atob() javascript函数来解码数据。

var decoded = atob("PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxYdHJhUmVwb3J0c0xheW91dFNlcmlhbGl6ZXIgU2VyaWFsaXplclZlcnNpb249IjIwLjIuNC4wIiBSZWY9");
console.log(decoded);