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
bojackhorseman 143 天前
如果是用 axios 请求,要多加一个参数,返回的才是文件
{ format: "blob" } |
2
maocat 143 天前 via iPhone
前端应该接受的是 arrayuint8 这个得自己转一下
|
3
leyoumake1997 143 天前
一般转 []byte 转 base64 都可以显示的到 Html 元素上的。wails 也支持 Assets Handle ([具体可以参考]( https://wails.io/zh-Hans/docs/guides/dynamic-assets))
|
4
LLaMA2 143 天前
后端返回文件流字节码,同时在响应头带上 Content-Type
例如你的文件是 pdf , 那么 Content-Type:application/pdf 这样你的 microsift edge 浏览器默认就是可以看到 pdf 的, 如果是 image/png 之类的,可以直接将 url 写到 img 标签的 src 属性 如果是浏览器无法预览的文件,例如 exe, 那么头是 application/octet-stream ,浏览器会默认呼出下载 |
5
langhuishan OP 感谢楼上回答,最后还是用的 pdf.js
|