解决图片保存到Storage之后file为空而无法上传

以前在工作中碰到一个功能,用户可以在没有网的时候选择图片,在有网的时候进到该页面再上传图片,所以得把数据保存到Storage。但是我发现文件类型的数据保存到Storage后变为{},而后台只接收文件对象。解决这个问题的办法有三种:

1.后台改接收参数类型
2.把类型为base64格式的url转为blob上传(这样后台返回的文件也为blob格式,不过没关系,img标签可以解析的)
// base64转blob
dataURLtoBlob = (dataurl) => {
    const arr = dataurl.split(','); const mime = arr[0].match(/:(.*?);/)[1];
    const bstr = atob(arr[1]); let n = bstr.length; const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime });
  }
3.把类型为base64格式的url转为文件
   // 将base64转换为文件
 ataURLtoFile = (dataurl, filename) => {
    const arr = dataurl.split(",");
    const mime = arr[0].match(/:(.*?);/)[1];
    const bstr = atob(arr[1]);
    let n = bstr.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, { type: mime });
  };

*【注意后面两种在移动端QQ浏览器有兼容问题哦,微信浏览器和手机自带的浏览器就没有问题】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值