小程序
小游戏
企业微信
微信支付
扫描小程序码分享
使用wx.request 获取服务器上的一个.bin文件。
但是request直接将.bin文件转换为了string 并且string长度和源文件大小不同 请问是什么问题?需要进行别的设置吗?
请求头设置:
Content-Type:
application/octet-stream
7 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
如果不转换成 string,你觉得它应该是个什么东西呢?ByteBuf?
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
服务器端返回的Content-Type:"application/octet-stream"是正确的,微信错误的把结果中的data强制转成了string
你的服务器输出了错误格式的内容,让官方修复什么 BUG?
遇到同样的问题,请求数据为二进制码时,ios真机直接无法收到任何数据,errMsg:requeat:fail response data convert to UTF8 fail,安卓和工具上则显示string长度与原始数据有差异,咨询官方是否可以修复这个bug,急!
wx.request() 只会把收到的内容理解为“字符串”(也许还会进一步当做 json 来解析),而且它会假设你发送的内容是 UTF-8 编码的,而事实上你的 .bin 文件不会符合这个预期,所以“转换为字符串”的过程中会出现乱码,长度当然也就变了。
你可以在服务器端先用 base64 编码,到了小程序里再解码。
@maq
感谢你的建议。
如果我可以通过request方式获取一个.bin文件的buffer或者内容 哪我可以通过ble接口进行升级 。
通过console 看到request接口其实已经将整个.bin文件接收但是不知道微信做了什么处理将内容转换为了string 导致内容长度与原文见内容长度不一致
首先,js 并不是 binary-friendly 的,在 js 中处理二进制数据一向是比较困难的,需要特殊支持。
很好奇你为什么要把一个 .bin 文件传到 js 里,接下来要做什么……
必要的话,可以考虑在服务器端对二进制内容进行 base64 编码,然后在小程序端用 wx.base64ToArrayBuffer() 解码。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
如果不转换成 string,你觉得它应该是个什么东西呢?ByteBuf?
服务器端返回的Content-Type:"application/octet-stream"是正确的,微信错误的把结果中的data强制转成了string
你的服务器输出了错误格式的内容,让官方修复什么 BUG?
遇到同样的问题,请求数据为二进制码时,ios真机直接无法收到任何数据,errMsg:requeat:fail response data convert to UTF8 fail,安卓和工具上则显示string长度与原始数据有差异,咨询官方是否可以修复这个bug,急!
wx.request() 只会把收到的内容理解为“字符串”(也许还会进一步当做 json 来解析),而且它会假设你发送的内容是 UTF-8 编码的,而事实上你的 .bin 文件不会符合这个预期,所以“转换为字符串”的过程中会出现乱码,长度当然也就变了。
你可以在服务器端先用 base64 编码,到了小程序里再解码。
@maq
感谢你的建议。
如果我可以通过request方式获取一个.bin文件的buffer或者内容 哪我可以通过ble接口进行升级 。
通过console 看到request接口其实已经将整个.bin文件接收但是不知道微信做了什么处理将内容转换为了string 导致内容长度与原文见内容长度不一致
首先,js 并不是 binary-friendly 的,在 js 中处理二进制数据一向是比较困难的,需要特殊支持。
很好奇你为什么要把一个 .bin 文件传到 js 里,接下来要做什么……
必要的话,可以考虑在服务器端对二进制内容进行 base64 编码,然后在小程序端用 wx.base64ToArrayBuffer() 解码。