总的来说是一个图片类型签名的问题
但是怎么会这样呢?让我们来看微信小程序是如何给我们返回图片的类型信息的————wx.getImageInfo()的res.type————貌似对jpeg类型的文件只会返回jpeg,而iOS端用wx.uploadFile()上传图片时,文件传递的类型是————'image/jpg'(???)
而我们如果请求签名时直接用'image/'+res.type,那么签名的文件类型和实际上传的文件类型就不一样了,再加上微信小程序至今没有在网络抓包工具中将wx.uploadFile()和wx.downloadFile()的全部内容完整展示出来,以至于我很久以来都认为是没有发送formData导致的问题,在这方面纠结了好久好久...
目前来看如果用Ucloud的对象存储做上传后端的话,都有可能遇到这样的问题,毕竟类型检验在实际使用中还是有需求的...
解决方法大概是签名时不传递content_type,或者对ios端进行特别处理,res.type == 'jpeg'时,使用'jpg'代替其类型。
不知道这个问题是和iOS有关还是和微信本身有关()
据我观察,完成上传后,对象存储中文件的MIME-Type也是image/jpeg,而不是image/jpg,合理怀疑这是微信在iOS端的bug。
Comments | NOTHING