gpt4 book ai didi

java - 如何使用 Angular 从java接收文件csv

转载 作者:行者123 更新时间:2023-11-30 10:01:48 24 4
gpt4 key购买 nike

我有一个返回 file.csv 的 rest api然后我检查响应是否为 200,并且数据也在 responsed.body 中。

但是浏览器没有下载csv文件。

这是 API:

ResponseEntity<Resource>  exportCsv() throws IOException {
/*
*
*/
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));


HttpHeaders headers = new HttpHeaders();
headers.add("Content-disposition", "attachment; filename=sample.csv");
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");

return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("text/csv"))
.body(resource);
}

这是 Angular

this.stickService.exportCsv( this.stickSearch ).subscribe(
response => this.downloadFile(response),
err => console.log('Error downloading the file.' + err.message
));


downloadFile(data: Response) {
const blob = new Blob([data], { type: 'text/csv' });
const url = window.URL.createObjectURL(blob);
window.open(url);
}


exportCsv( stickSearch: StickSearch ): Observable<any> {
const headers = this.oAuthService.putTokenInHeaders(this.headers);

let params = new HttpParams({encoder: new HttpURIEncoder()});

if (stickSearch.searchString() !== '') {
params = params
.append('search', stickSearch.searchString())
}

return this.httpClient.get(this.exportCsvUrl + '/exportCsv',
{
responseType: 'text',
params: params,
headers
});
}

我在响应正文中得到了正确的数据。

但是下载失败。 '下载文件时出错。解析 myURL 时 Http 失败'

感谢帮助

它现在工作了,这是后果非常感谢!

最佳答案

我可以看到您正在获取服务器提供的输出,然后根据该 CSV 构建 URL。那是没有必要的。如果您只想下载 CSV,那么您的 Java 代码中只缺少以下内容:

headers.add("Content-disposition", "attachment; filename=sample.csv");

一旦有了标题,就可以摆脱 downloadFile 方法,并可能将 this.httpClient.get 请求更改为 窗口。打开

看看这是否能解决您的问题,并在两种情况下提供反馈。

关于java - 如何使用 Angular 从java接收文件csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269125/

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