typescript 将HTTP responseType设置为arraybuffer

cbjzeqam  于 2023-06-07  发布在  TypeScript
关注(0)|答案(3)|浏览(202)

我在构建jhipster项目时遇到一个错误,它说我需要在get请求中更改参数responseType
下面是错误:
类型“{ responseType:“array”;“}”不能分配给类型为“{ headers?:HttpHeaders| { [header:string]:弦|String[]; }; observe?:“body”; params?:Ht...'。属性“responseType”的类型不兼容。类型“arraybuffer”不能分配给类型“json”。版本:typescript 2.7.2
正如你所看到的,typescript告诉我将值从arraybuffer更改为json,但我需要将其保留为arraybuffer,因为我正在处理一个文件,并且我完全知道responseType可以设置为arraybufferblobjsontext
这是密码

showfile(file?: any): Observable<any> {
    return this.http.get<any>(SERVER_API_URL + `leave/api/downloadFile/${file}`, { responseType: 'arraybuffer' });
}
rn0zuynd

rn0zuynd1#

this.http.get<any>

删除任何

6qqygrtg

6qqygrtg2#

当我需要调用一个返回文件的端点时,我通常使用类型Observable<HttpResponse<Blob>>
尝试:

showfile(file?: any): Observable<HttpResponse<Blob>> {
    return this.http.get(SERVER_API_URL + `leave/api/downloadFile/${file}`, { responseType: 'blob' });
}
s4n0splo

s4n0splo3#

PDF文件使用ArrayBuffer;此模式适用于GET动词:

return this.http.get(url, {responseType: 'arraybuffer'});

一些注意事项:
1.如果url是不返回文件流的API端点(例如APPLICATION_OCTET_STREAM),而不是使用JSON输出进行响应,您不能使用不匹配的responseType。

  1. Typescript不需要显式返回类型:如果没有定义参数类型,TypeScript将默认使用任何类型,除非有其他类型信息可用。
    1.如果你的编辑器和/或npm构建抛出错误,你可能需要创建一个对象来包含responseType,如下所示:
let HTTPOptions:Object = {responseType: 'arraybuffer'};
    return this.http.get(url, HTTPOptions );

1.您可能只需要POST请求的显式响应类型,如下所示:

return this.http.post<ArrayBuffer>(url, requestBody, HTTPOptions );

相关问题