如果是canvas对象直接通过uni.canvasToTempFilePath
,这个方法在app端可能返回的不是临时路径,你需要自己转换一下
export function normalizeToRemoteUrl (url: string): Promise<string> {
return new Promise((resolve, reject) => {
// 已经是网络图片或者blob直接返回
if (url.indexOf('http') === 0 || url.indexOf('blob') === 0) return resolve(url)
// #ifdef APP-PLUS
// app 文件处理
// @ts-ignore, plus d.ts 文档不对
plus.io.resolveLocalFileSystemURL(url, (entry) => {
resolve(entry.toRemoteURL())
}, reject)
// #endif
})
}
如果是base64,直接通过canvas.drawImage 先绘制图像,然后再通过上面的步骤转换为临时路径
2 个回复
ArmLiang
如果是canvas对象直接通过
uni.canvasToTempFilePath
,这个方法在app端可能返回的不是临时路径,你需要自己转换一下如果是base64,直接通过canvas.drawImage 先绘制图像,然后再通过上面的步骤转换为临时路径
DCloud_UNI_GSQ
不可以使用 Blob 可以使用 ArrayBuffer,另外一般没必要转换 base64 ,使用 uni.uploadFile 就行
[已删除] (作者)
我这边的上传接口是必须要传一个二进制的,而且这个接口不能去改动,因为使用的地方太多。也要对使用低版本的人兼容
2020-09-18 15:58
[已删除] (作者)
ArrayBuffer我发现通过uni.reuqest并不能发送,在打印arrarbuffer.byteLength时是有的,然后放到uni.request的data上面去就变成空了
2020-09-18 16:00
[已删除] (作者)
请问在app中,有类似h5的FormData方法吗?有FormData方法的话,很多传参问题都可以得到很好的解决
2020-09-18 16:02
DCloud_UNI_GSQ
回复 [已删除]: iOS还安卓?另外测试一下小程序是否正常
2020-09-18 16:04
[已删除] (作者)
回复 DCloud_UNI_GSQ: ios和安卓都不行,小程序无法测试,我的代码是专门写app的
2020-09-18 16:20
DCloud_UNI_GSQ
回复 [已删除]: 单独建立个工程测试一下,以便判断是App端的实现问题还是你自己的逻辑问题
2020-09-18 16:48