为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang 中解析 javascript Blob

在 golang 中解析 javascript Blob

Go
DIEA 2021-12-20 19:02:33
在走,你可以阅读使用Ajax和形式发送FORMDATA使用r.ParseMultipartForm(),其中填充Form有形式请求数据地图。func form(w http.ResponseWriter, r *http.Request) {    r.ParseMultipartForm(500) //    fmt.Fprintf(w, "This is the value of %+v", r.Form)}但是,我还没有找到解析 Blob 的方法。每当我发送一个 Blob 而不是发送表单时,上面的代码就会返回一个空映射。也就是说,当我发送这个:var blob = new Blob([JSON.stringify(someJavascriptObj)]);//XHR initialization, etc. etc.xhr.send(blob);上面的 Go 代码不起作用。现在,当我发送这个:var form = new FormData(document.querySelector("form"));//...xhr.send(form);我可以毫无问题地读取表单数据。
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

r.ParseMultipartForm(500)

也许这里返回错误?尝试捕获错误:


if err := r.ParseMultipartForm(500); err != nil {

    http.Error(w, err.Error(), http.StatusInternalServerError)

}

此外,请考虑提高 500 字节内存限制,因为较大的 blob 将写入临时文件。


查看完整回答
反对 回复 2021-12-20
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我认为 javascript 将 blob 视为文件,因此您可以查看它 r.MultipartForm.File、获取文件头、打开它、读取、解码和解析。尝试例如


r.ParseMultipartForm(500) 

fmt.Fprintf(w, "This is the value of %+v", *r.MultipartForm.File)

}


查看完整回答
反对 回复 2021-12-20
?
临摹微笑

TA贡献1982条经验 获得超2个赞

我认为 Javascript 的 Blob 是一个十六进制字符串,最终可以转换为[]byte,这是 Go 中 JSON 的标准类型。


// Once you get the blob

blobString := `7b22666f6f223a205b22626172222c202262617a222c2039395d7d`


b, _ := hex.DecodeString(blobString)

json := string(b)

fmt.Println(json) // prints out {"foo": ["bar", "baz", 99]}

你可能想看看encoding/hex和encoding/binary包解码从Javascript后天类型的BLOB[]byte中去,如果它不是了。


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 437 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信