在反应中从服务器下载并打开 pkpass
Download and open pkpass from server in react
我什么都试过了,但还是不行。我正在通过 https://github.com/walletpass/pass-js 创建苹果钱包通行证
当我将它下载到我已经实现它的节点服务器上时,我得到了一个有效的通行证并且可以将它加载到钱包中。但是当我通过我的反应应用程序下载通行证时,我得到了一个缓冲区。当解码该缓冲区时,我得到(看起来)与服务器相同的数据内容。但是当我保存那些东西时,大小是 113kb,不像我在服务器上创建的通行证大小 65kb 并且它没有有效的 pkpass 文件。
也许有人也有这个问题?
我的服务器代码:
return h
.response(walletData)
.type('application/vnd.apple.pkpass')
.code(200)
我的 React 代码:
.get(`/appleWalletCard/${user.me._id}`)
.then((response: any) => {
if (response) {
const file = new Blob([response.data])
console.log(file)
const fileURL = URL.createObjectURL(file)
const link = document.createElement('a')
link.href = fileURL
link.click()
}
})
解决方法如下:您必须将 responseType 设置为数组缓冲区。
.get(`/appleWalletCard/${user.me._id}`, {
responseType: 'arraybuffer'
}
我什么都试过了,但还是不行。我正在通过 https://github.com/walletpass/pass-js 创建苹果钱包通行证 当我将它下载到我已经实现它的节点服务器上时,我得到了一个有效的通行证并且可以将它加载到钱包中。但是当我通过我的反应应用程序下载通行证时,我得到了一个缓冲区。当解码该缓冲区时,我得到(看起来)与服务器相同的数据内容。但是当我保存那些东西时,大小是 113kb,不像我在服务器上创建的通行证大小 65kb 并且它没有有效的 pkpass 文件。
也许有人也有这个问题?
我的服务器代码:
return h
.response(walletData)
.type('application/vnd.apple.pkpass')
.code(200)
我的 React 代码:
.get(`/appleWalletCard/${user.me._id}`)
.then((response: any) => {
if (response) {
const file = new Blob([response.data])
console.log(file)
const fileURL = URL.createObjectURL(file)
const link = document.createElement('a')
link.href = fileURL
link.click()
}
})
解决方法如下:您必须将 responseType 设置为数组缓冲区。
.get(`/appleWalletCard/${user.me._id}`, {
responseType: 'arraybuffer'
}