我正在向一个端点发送一个API请求,它应该会给予我一个powerpoint文件。
然而,在我的回答中,它是一堆二进制代码。
标头为内容类型:'应用程序/八位字节流'
例如,
"PK\u0003\u0004\u0014\u0000\u0000\u0000\b\u0000�\u0015'U��O�.\u000
下面是调用API的代码中的axios,
export const getPtt = pptRequests => {
const response = new Promise((resolve, reject) => {
axios
.post(
`url`,
pptRequests
)
.then(data => {
resolve(data)
})
.catch(err => {
reject(err)
})
})
return response
}
我可以知道如何解码的二进制代码,所以我可以使它将下载后,如下图发送出去
编辑:
在这里调用函数
const handleGeneratePtt = () => {
const pptRequests = getPttRequests()
getPtt (pptRequests ) // how to make it start downloading a ppt?
}
Edit:
export const getPtt = pptRequests => {
const response = new Promise((resolve, reject) => {
axios
.post(
`url`,
pptRequests
)
.then(data => {
const blob = new Blob([new Uint8Array(response.data)])
const url = window.URL.createObjectURL(blob)
const a = document.createElement('a')
a.setAttribute('style', 'display:none;')
document.body.appendChild(a)
a.href = url
a.download = 'filename'
a.click()
a.remove()
resolve(data)
})
.catch(err => {
reject(err)
})
})
return response
}
1条答案
按热度按时间lnlaulya1#
将您的数据转换为
blob
(无论是base64
、octate
、arraybuffer
等)创建对象URL
创建隐藏的dom元素(使其在所有浏览器中工作)
将文件附加到隐藏元素,然后单击隐藏元素下载。
只需确保将数据转换为
blob