**背景:在飞书小程序开发(和微信小程序类似),需要获取到文本的图片信息,请求飞书接口返回的图片信息是一个二进制流,获取获取blob一个对象。需要把这个图片数据上传到公司的服务器上,变成自己公司的图片。
**公司的接口数据
--需要的数据效果在Google控制台效果是这样的
--请求头有用boundary包裹
--这个接口是原来存在的,在vue项目里可以跑通,现在我在小程序里面调用这个接口数据就传不过去。
**我获取到的数据形式
--在小程序里我能获取到图片的二进制流数据或者blob对象,如下
或这种格式
看看这个库: https://github.com/zyrong/miniprogram-polyfill/tree/master/packages/form-data
wx.chooseImage({ count: 1, // 默认9 sizeType: ["compressed"], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有 success: (res) => { // 返回选定照片的本地文件路径列表,tempFilePath可以作为image标签的src属性显示图片 var tempFilePaths = res.tempFilePaths; var tempFilesSize = res.tempFiles[0].size; //获取图片的大小,单位B if (tempFilesSize <= 3000000) { //图片小于或者等于3M时 可以继续 wx.uploadFile({ url: 'xxx', filePath: res.tempFilePaths[0], name: "xxx", header: { chartset: "utf-8", "content-type": "multipart/form-data" }, formData: { token: xxx }, success: (res) => { }, fail: function(e) { } }) } else { wx.showToast({ title: "上传图片不能大于3M哦~", icon: "error" }) } } });
两种尝试过的失败效果
1.手动凭借请求头
不要对返回值进行编码
还可以用wx.downloadFile下载获取临时路径然后wx.uploadFile上传.