title

谷歌浏览器无法通过url对pdf文件实现预览

背景

之前接口返回的是Blob数据流,前端通过转化,由window.open打开转化的Blob Url可以实现在谷歌浏览器上预览

问题

现接口返回的是由OSS存放资源的Url,前端可以通过window.open直接下载,但是不可预览了,与需求不符合

解决

// result?.link 为接口返回的url fetch(result?.link, { method: 'get', responseType: 'arraybuffer', }) .then((r) => { if (r.status !== 200) { return r.json() } return r.arrayBuffer() }) .then((blobRes) => { // // 生成 Blob 对象,设置 type 等信息 let file = new Blob([blobRes], { type: 'application/pdf;base64' }) let fileURL = URL.createObjectURL(file) window.open(fileURL) }) .catch((err) => { console.error(err) })