我想从api下载并保存文件。我的文件名为text.txt
,但保存的文件名为:_text.txt_
,该文件的内容为:[object Object]
这是我下载文件的功能:
const options = {
headers: new HttpHeaders().append('Authorization', this.oAuthService.getAccessToken()),
params: new HttpParams().append('responseType', 'text'),
observe: 'response' as 'response'
}
return this.http.get(this.fileServerUrl + 'file/download/' + filename + '/' + version, options)
.subscribe(
resp => { this.saveToFileSystem(resp)
});
}
private saveToFileSystem(response) {
const contentDispositionHeader: string = response.headers.get('Disposition');
const parts: string[] = contentDispositionHeader.split(';');
const filename = parts[1].split('=')[1];
filename.replace(/"/g, '');
console.log(filename);
console.log(response.body)
const blob = new Blob([response.body], { type: 'text/plain' });
saveAs(blob, filename);
}
第一个console.log的输出是text.txt,response.body的console.log是:这是一个测试文本。
为什么保存的文件名开头和结尾都是_,而内容不是响应正文中的文本。
感谢前进
答案 0 :(得分:0)
尝试一下:
const blob = new Blob([JSON.stringify(response.body)], { type: 'text/plain' });
对于_text.txt_
:
字符串是不可变的类型。所以filename.replace ...不会更改文件名的值,它会返回新值。
您必须创建新变量:
const newFileName = filename.replace(/"/g, '');
...
saveAs(blob, newFileName);
或仅将filename.replace(/"/g, '')
放入saveAs
saveAs(blob, filename.replace(/"/g, ''));