[已删除]
[已删除]
  • 发布:2020-09-18 15:39
  • 更新:2020-11-19 11:33
  • 阅读:6296

uniapp 在app中,base64支持转换成blob对象吗?

分类:uni-app

我这边上传文件的接口,需要传一个二进制对象,然后我再app中,把文件转换成了base64,请问如何把这个文件的base64转换成blob对象?

如果可以转换blob,那么blob对象能否通过uni.request请求发送?

2020-09-18 15:39 负责人:无 分享
已邀请:
ArmLiang

ArmLiang

如果是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 先绘制图像,然后再通过上面的步骤转换为临时路径

DCloud_UNI_GSQ

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

该问题目前已经被锁定, 无法添加新回复