gpt4 book ai didi

reactjs - 使用 React Query 下载 Blob,createObjectURL 错误

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

使用 fetch 我可以通过执行以下代码来创建下载链接

const result = await fetch(authLinkProps.url, {
headers: {
Authorization: getUserToken(),
},
});

const blob = await result.blob();
const href = window.URL.createObjectURL(blob);

一切正常,但我在我的项目中使用 React Query,所以我想保持一致并使用它来做同样的事情。

如果我执行以下操作

const { data, error } = useDocuments(authLinkProps.url);
let href: string = '';
console.log(data);
if (data !== undefined) {
href = window.URL.createObjectURL(data);
}

useDocuments 在哪里

return useQuery<Blob, Error>('document-download', async () => {
const dwnldHeader = {
headers: {
Authorization: currentUser,
responseType: 'blob',
},
};
const { data } = await axios.get<Blob>(apiUrl, dwnldHeader);
return data;
});

我收到错误

"Uncaught (in promise) TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed."

如果我控制台数据看起来像一个 Blob ?

有什么想法吗?

最佳答案

useQuery 似乎将 blob 响应转换为字符串。对我有用的是使用 arraybuffer 返回类型,然后将其转换为 blob。

此外,responseType 不是 header 对象的一部分,而是配置的一部分。

就您的 useDocuments 而言

return useQuery<Blob, Error>('document-download', async (apiUrl) => {
const config = {
headers: {
Authorization: currentUser,
},
responseType: 'blob',
};
const { data } = await axios.get(apiUrl, config);
return new Blob(data);
});

关于reactjs - 使用 React Query 下载 Blob,createObjectURL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72815224/

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