gpt4 book ai didi

angular - 使用 FileSaver 和 blob 将响应正文另存为文件

转载 作者:行者123 更新时间:2023-12-03 23:54:08 25 4
gpt4 key购买 nike

我想从 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是:这是一个测试文本..

那么为什么保存的文件名在开头和结尾带有 _ 并且内容不是来自响应正文的文本。

提前致谢

最佳答案

尝试这个:

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, ''));

关于angular - 使用 FileSaver 和 blob 将响应正文另存为文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52078312/

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