记一次微信小程序直传OSS,自定义参数无法正常携带的问题

@hanq  2024年08月25日 09:54

记一次微信小程序直传OSS,自定义参数无法正常携带的问题

结论

如题。如果使用微信小程序直传OSS还需要携带自定义参数,将自定义参数命名方式改为下划线方式

排查过程

因有需求微信小程序用户上传文件,考虑到使用了阿里云的OSS云存储服务,所以就需要微信小程序直传OSS,参照官方教程,已经上传OK了(不建议微信小程序先上传服务器,再服务器转到OSS,会牺牲服务器负载),嗯,很丝滑~

但是,做业务的话,由前端标记上传资源总是不可靠的,所以需要使用OSS的上传回调功能,所有自然就有了对接自定义参数,将业务id回传到服务器。

参照OSS上传回调配置,构造callbackcallback-var,发现如下问题:

  • url拼接参数方式,服务器收不到oss回调 不知原因,提工单后回复没有意义
  • header追加方式,服务器收不到oss回调 不知原因,提工单后回复没有意义
  • post追加表单参数,服务器收到oss回调

所以鉴于以上测试结果,只能用post方式进行上传文件,但是回调接口发现,自定义的业务id无法正常传递,分析原因:

  • wx.uploadFile,追加表单参数看不到payload
  • wx.request,无法上传文件
  • 提工单已读乱回

没办法,开始了磨人的调试阶段,发现OSS上传回调配置,自定义参数写作:

{"x:my_var": "var"}

而我的自定义参数命名为:

{"x:myVar": "var"}

修改对应位置policy和formData中的自定义参数为下划线命名方式,传递自定义参数成功!

真坑啊,想给这个接口的同学寄刀片

运行环境

不同运行环境和软件版本可能表现不一样, 本文提供参考

  • Windows 11 23H2
  • 微信开发者工具 RC 1.06
  • golang 1.21.5 windows/amd64
  • gin v1.10.0
  • 花生壳 8.11.0

附录


添加新评论