
chatgpt 回答的是 blob ,还是无法显示。通过 a 标签下载下来的文件大小也不一致。 后端代码
func (a *App) Greet(name string) ([]byte, error) { pdfData, err := ioutil.ReadFile(".//aaa.pdf") if err != nil { return nil, err } return pdfData, nil } 前端代码
const fetchBlob = async () => { try { const pdfData = await Greet('aaa'); const blob = new Blob([pdfData], { type: 'application/pdf' }); console.log(blob) const url = URL.createObjectURL(blob); setBlobUrl(url); } catch (error) { console.error('Error fetching blob:', error); } }; 1 dumbass 2024-07-03 11:34:42 +08:00 如果是用 axios 请求,要多加一个参数,返回的才是文件 { format: "blob" } |
2 maocat 2024-07-03 12:01:52 +08:00 via iPhone 前端应该接受的是 arrayuint8 这个得自己转一下 |
3 leyoumake1997 2024-07-03 13:00:05 +08:00 一般转 []byte 转 base64 都可以显示的到 Html 元素上的。wails 也支持 Assets Handle ([具体可以参考]( https://wails.io/zh-Hans/docs/guides/dynamic-assets)) |
4 LLaMA2 2024-07-03 14:28:40 +08:00 后端返回文件流字节码,同时在响应头带上 Content-Type 例如你的文件是 pdf , 那么 Content-Type:application/pdf 这样你的 microsift edge 浏览器默认就是可以看到 pdf 的, 如果是 image/png 之类的,可以直接将 url 写到 img 标签的 src 属性 如果是浏览器无法预览的文件,例如 exe, 那么头是 application/octet-stream ,浏览器会默认呼出下载 |
5 langhuishan OP 感谢楼上回答,最后还是用的 pdf.js |