比如
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['camera'],
success: (res)=>{
var reader = new FileReader()
reader.onload = ()=>{
that.setData({
selfie: reader.result
})
}
reader.readAsDataURL(new Blob([res.tempFilePaths[0].slice(2)],{type:'image/jpeg'}))
}
})
比方说 res.tempFilePaths[0] = wxfile://tmp_182046745o6zAJsz3uqHiNpvw66iUfDIjvPTkb31ab4e0f79bac5f21063348326464a8.jpg
遗憾的是这输出:
ZmlsZTovL3RtcF8xODIwNDY3NDVvNnpBSnN6M3VxSGlOcHZ3NjZpVWZESWp2UFRrYjMxYWI0ZTBmNzliYWM1ZjIxMDYzMzQ4MzI2NDY0YTguanBn
解码为...file://tmp_182046745o6zAJsz3uqHiNpvw66iUfDIjvPTkb31ab4e0f79bac5f21063348326464a8.jpg
最佳答案
不,那是因为 file://
被认为是不同的来源,并且出于安全原因被浏览器阻止(想象一下,如果您可以任意指向用户磁盘上的密码文件.. )。
在问题中提供的示例中,只有保存文件名本身的字符串被烘焙到blob中(如解码时所示)。
您必须提供一种机制,例如file
类型的input
,以从用户系统获取blob/file对象,或者通过(本地)主机(服务器)因此可以通过 fetch()
使用 http(s)或XMLHttpRequest()
.
关于javascript - 如果我们有本地文件路径,是否可以使用 new Blob(array,options) 创建 Blob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814661/