要解决一些问题(升级firebase 2到3的问题),在这种情况下我必须使用iframe执行某些任务,然后上传到Firebase存储。
我注意到我无法将Blob传递给iframe函数?当我在同一个域中做的时候
canvas.toBlob(function(blob) {
var upload = firebase.storage().ref().child('testing.jpg').put(blob)
upload.on('state_changed', function(snapshot) {
console.log(snapshot)
}, function(err) {
console.error(err.stack)
reject(err)
}, function() {
console.log('uploaded to', upload.snapshot.downloadURL)
resolve(upload.snapshot.downloadURL)
})
}, 'image/jpeg')
有效。但是当我将blob传递给iframe函数时
canvas.toBlob(function(blob) {
document.getElementById('iframe').contentWindow.uploadImage('testing.jpg', blob)
.then(function(url) {
console.log('>>>', url)
})
.catch(function(err) {
console.error(err.stack)
})
}, 'image/jpeg')
失败了
Firebase存储:索引0处的
put
中的参数无效:预期的Blob或文件。
似乎当Blob传递到iframe时它会变得腐败还是什么?
答案 0 :(得分:0)
似乎在传递对象时会发生一些奇怪的事情,所以我传递了base64字符串。
iframe.contentWindow.uploadImage(path, canvas.toDataURL('image/jpeg'))