使用wx.request 获取服务器上的一个.bin文件。
但是request直接将.bin文件转换为了string 并且string长度和源文件大小不同 请问是什么问题?需要进行别的设置吗?
请求头设置:
Content-Type:
application/octet-stream
网友回复:
首先,js 并不是 binary-friendly 的,在 js 中处理二进制数据一向是比较困难的,需要特殊支持。
很好奇你为什么要把一个 .bin 文件传到 js 里,接下来要做什么……
必要的话,可以考虑在服务器端对二进制内容进行 base64 编码,然后在小程序端用 wx.base64ToArrayBuffer() 解码。
@maq
感谢你的建议。
如果我可以通过request方式获取一个.bin文件的buffer或者内容 哪我可以通过ble接口进行升级 。
通过console 看到request接口其实已经将整个.bin文件接收但是不知道微信做了什么处理将内容转换为了string 导致内容长度与原文见内容长度不一致
wx.request() 只会把收到的内容理解为“字符串”(也许还会进一步当做 json 来解析),而且它会假设你发送的内容是 UTF-8 编码的,而事实上你的 .bin 文件不会符合这个预期,所以“转换为字符串”的过程中会出现乱码,长度当然也就变了。
你可以在服务器端先用 base64 编码,到了小程序里再解码。
楼上正解
@maq 我的理解和您预期的是一致的。 感谢你 看来目前只能转换base64 实现这个了。
我并不明白微信为何不设置request()接收类型 就像angularjs一样。
哇塞 官方?@can 有何见解嘛?