微信小程序 wx.uploadFile无法上传解决办法
微信小程序 wx.uploadFile无法上传解决办法
微信安卓客户端无法使用wx.uploadFile上传文件的问题有不少开发者都遇到。
我也因为一直不能解决,硬着头皮提交审核被拒(抱着审核者最好用iOS检测的心态,不巧审核我应用的用的是安卓),才尝试使用第三方的手段解决。
最终我是用了七牛第三方存储的方式,将文件直接上传至七牛的储存的空间上再回调使用。
像又拍云,万象优图这些第三方存储源都可以采用这种思路。
是将七牛的https上传域名放进小程序的域名名单中。
这里我使用的是七牛华东区的域名https://up.qbox.me。
微信小程序wx.uploadFile采用的是multipart/form-data方式上传,即表单上传。
根据七牛的官方文档说明 http://developer.qiniu./docs/ ... up/form-upload.html
主要需要的就是file(文件本身)和token(上传凭证)。
然后在服务端部署获取上传凭证的业务代码,通过wx.request请求获取token。
var that = this; wx.request({ url: 'https://xxx/token', method: 'POST', data: {}, header: { 'content-type':'application/x--form-urlencoded' }, suess: function(res) { that.token = res.data; //默认返回一个token,赋值给已经有的token属性。这里只是示例,具体根据需求可自行设定。 }, fail:function (res) { console.log(res) } })
具体如何部署七牛凭证代码,可参考http://78re52.1.z0.glb.cloudd ... %9C%8D%E5%8A%A1.pdf
获得凭证后就可以通过wx.uploadFile上传了。具体代码为
var that = this; var key = Math.random().toString(36).substr(2); //生成一个随机字符串的文件名 wx.uploadFile({ url: 'https://up.qbox.me', filePath: flie, name: 'file', formData:{ 'token': that.token,//刚刚获取的上传凭证 'key': key//这里是为文件设置上传后的文件名 }, suess: function(r){ var data = r.data;//七牛会返回一个包含hash值和key的JSON字符串 if(typeof data==='string')data = JSON.parse(data.trim());//解压缩 if(data.key){ ... //这里就可以直接使用data.key,文件已经上传成功可以使用了。如果是图片也可以直接通过image调用。 } }, fail:function (res) { console.log(res) } })
最终采用这种方式解决了安卓无法上传文件的问题,上传自身服务器的问题还是有待解决。
不过对于急需解决方案的开发者还是提供了一个可行的方案。
现在利用第三方图源或存储源是一个普遍的方案,很多存储源例如七牛,又拍云,万象优图都提供了免费的空间供开发者使用。
建议大家也多做这方面的架构和尝试。
感谢阅读,希望能帮助到大家,谢谢大家对本站 的支持!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程