易软
易软
  • 发布:2020-06-12 10:58
  • 更新:2020-06-12 11:44
  • 阅读:1823

app发布为网站版后 图片选择后返回的是blob:http.....格式请问怎么将其转为img呢

分类:uni-app

现阶段业务需求将app 发布为网站版,但是选择图片后 返回的是blob的网络地址,后台设置的是只能接受img图片 像APP 端一样传图片地址 img地址如:_doc/....XX.jpg
我就使用了

blobOrFileToDataURL: function (obj, callback) {  
            var flag = callback && typeof callback === "function";  
            var reader = new FileReader();  
            reader.readAsDataURL(obj);  
            reader.onload = function (e) {  
                if (!flag) return e.target.result;  
                callback(e.target.result);  
            };  
        },  
        blobOrFileToImage: function (obj, callback) {  
            console.log(obj)  
            var flag = callback && typeof callback === "function";  
            ESUtils.fn.blobOrFileToDataURL(obj, function (dataurl) {  
                var img = new Image();  
                img.src = dataurl;  
                if (!flag) return img;  
                callback(img);  
            });  
        }

这两个函数来转换

uni.chooseImage({  
                count: 8,  
                success: res => {  
                                       uni.showModal({  
                        title:"",  
                        content:JSON.stringify(res)  
                    })  
                    if (res.errMsg == 'chooseImage:ok') {  
                        res.tempFilePaths.map(item => {  
                            ESUtils.fn.blobToImage(item,res=>{  
                                uni.showModal({  
                                    title:"",  
                                    content:JSON.stringify(res)  
                                })  
                            });  
                            this.imgList.push(item);  
                            if (this.imgList.length > 8) {  
                                this.imgList = this.imgList.slice(0, 8);  
                            }  
                        });  
                    }  
                }  
            });

然后再chooseImage中打出来看是否转换成功,但是返回了
Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.
告诉我 item 不是blob格式的
我通过弹出框查看了返回的地址是 tempFilePaths:["blob:http://域名/id"]。
请问这个我怎么解决呢,
最终 我是想把blob变成像 "_doc/....XX.jpg"这样的。
还有就是 不转换 使用formData来上传
可是 我不想用formData ,改动太多

2020-06-12 10:58 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

请求这个blob开头的地址返回的二进制数据即可

function urlToFile (url) {  
  return new Promise((resolve, reject) => {  
    var xhr = new XMLHttpRequest()  
    xhr.open('GET', url, true)  
    xhr.responseType = 'blob'  
    xhr.onload = function () {  
      resolve(this.response)  
    }  
    xhr.onerror = reject  
    xhr.send()  
  })  
}
  • 易软 (作者)

    ???返回的二进制数据?返回的是一个Blob对象啊

    2021-12-16 15:41

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