无法将blob传递给iframe

时间:2016-10-27 04:50:26

标签: javascript iframe

要解决一些问题(升级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时它会变得腐败还是什么?

1 个答案:

答案 0 :(得分:0)

似乎在传递对象时会发生一些奇怪的事情,所以我传递了base64字符串。

iframe.contentWindow.uploadImage(path, canvas.toDataURL('image/jpeg'))