gpt4 book ai didi

asp.net - Angular 2保存Excel文件

转载 作者:行者123 更新时间:2023-12-04 21:55:49 26 4
gpt4 key购买 nike

我正在尝试将 Excel 文件从我的服务器保存到客户端 PC,但它变得一团糟。

当我向服务器请求我的文件时,请求的正文如下所示:

��ࡱ�>�� &����



我想这很正常,因为 excel 是二进制格式。我正在使用文件保护程序插件来保存我的文件,目前我的 CSV 和 ASCII 文件运行良好。
这是我要下载的功能:
downloadFile(filePath: string, name: string): void{
this.dataImportService.downloadFile(filePath)
.then(data => {
this.headers = data.headers;
let content = this.headers.get('content-type');
var blob = new Blob([data._body], { type: content });
importedSaveAs(blob, name);
});
}

有什么我做错了或者我可以改进的地方吗?
预先感谢您的帮助。

编辑:这是我的服务器代码:
[HttpGet]
public void downloadFile(string path)
{
try
{
string extension = Path.GetExtension(path);
string fileName = Path.GetFileName(path);

HttpResponse response = System.Web.HttpContext.Current.Response;

response.AppendHeader("Content-Disposition", "attachment; filename="+fileName);
response.AddHeader("Content-Type", Utils.MimeTypesConverter.GetMimeType(extension));

response.TransmitFile(path);
Response.End();
}
catch (Exception ex)
{
Response.Write(ex.Message);
return;
}

}

和我的 dataImportService.ts
downloadFile(filePath: string): any{
return this.http.get(SERVICE_URL + 'DataImport/downloadFile?path=' + filePath)
.toPromise()
.then(response =>{
return response;
})
.catch(this.handleError);
}

我来自服务器的http响应:

enter image description here

最佳答案

您必须自己将包含 HTTP header 的响应映射到 Blob。
因此,将代码更改为带有映射的 Observable 以转换响应。

downloadFile(filePath: string): Observable<any> { 
return this.http.get(
`${SERVICE_URL}DataImport/downloadFile?path=${filePath}`,
{responseType: ResponseContentType.Blob }
)
.map(res:Response => res.blob());
}

关于asp.net - Angular 2保存Excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45107401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com