如何使用CapacitorHttp下载PDF并设置responseType为blob
CapacitorHttp 如何配置类似responseType: 'blob'的选项?
可以直接在CapacitorHttp的请求配置里添加responseType: 'blob'来获取二进制Blob数据,不过你的代码里有几个需要修正的地方:
1. 移除无用的请求头
你当前请求头里的access-control-allow-origin、access-control-allow-methods、access-control-allow-headers都是服务器响应头,客户端发起请求时不需要携带这些字段,删掉它们即可。
2. 添加responseType配置
在请求options里直接加上responseType: 'blob',CapacitorHttp会自动把响应体解析为Blob类型。
3. 正确获取Blob数据
CapacitorHttp的HttpResponse对象里,实际的响应数据存在data字段中,不是整个response对象,所以你需要把response.data传给write_blob的blob参数。
修正后的完整代码:
async downloadPDF(FullName: any, URL: any) { const options = { url: URL, headers: { 'x-authorization-token': 'XXXXXXXXX', }, responseType: 'blob', // 添加responseType配置 params: {}, }; const response: HttpResponse = await CapacitorHttp.get(options); // 传入response.data作为Blob参数 await write_blob({ directory: Directory.Documents, path: `${FILE_DIR}/${FullName}`, blob: response.data as Blob, }); }
补充说明
设置responseType: 'blob'后,CapacitorHttp会自动处理二进制响应体,response.data就会是符合Blob类型要求的对象,能解决你之前遇到的类型错误问题。
内容的提问来源于stack exchange,提问作者Thomas Degroot
相关产品推荐
相关产品推荐

