Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iFrame之间传递JavaScript文件对象_Javascript_Xmlhttprequest - Fatal编程技术网

在iFrame之间传递JavaScript文件对象

在iFrame之间传递JavaScript文件对象,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我需要将一个文件对象传递给一个跨域iframe,以便可以使用XHR上传它。我使用easyXDM进行跨域通信,但相关的问题是浏览器如何处理传递此对象的问题 fileUpload: function (data, success, error) { var file = data.file, name = data.name, size = data.size, params = data.params; var xhr = new

我需要将一个文件对象传递给一个跨域iframe,以便可以使用XHR上传它。我使用easyXDM进行跨域通信,但相关的问题是浏览器如何处理传递此对象的问题

fileUpload: function (data, success, error) {
    var file = data.file,
        name = data.name,
        size = data.size,
        params = data.params;

    var xhr = new XMLHttpRequest();
    xhr.upload.onprogress = function (e) {
        if (e.lengthComputable) 
            console.log(e.loaded);
    }
    xhr.onreadystatechange = function (e) {
        if (xhr.readyState == 4)
            success();
    }

    params = params || {};
    params['qqfile'] = name;
    var queryString = qq.obj2url(params, '/api/2/photo/upload');

    xhr.open("POST", queryString, true);
    xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
    xhr.setRequestHeader("X-File-Name", encodeURIComponent(name));
    xhr.setRequestHeader("Content-Type", "application/octet-stream");
    xhr.send(file);
}
通过PostMessageAPI传递数据后调用上述方法;当它到达这里时,文件对象,以前看起来像这样(从Web检查器打印):

现在只是一个普通对象,没有文件:

Object
lastModifiedDate: "2009-07-14T05:32:31.000Z"
name: "Chrysanthemum.jpg"
size: 879394
type: "image/jpeg"
webkitRelativePath: ""
__proto__: Object

因此,由于文件引用丢失,Xhr在上载时不会传递任何二进制数据如何将文件对象成功传递给iframe?

由于浏览器的安全性,无法在窗口或不同的源之间传递文件对象,因为文件对象的生命周期绑定到其源窗口


相反,如果需要,您可以传递文件数据负载。

据我所知,您只能通过该机制发送字符串;否则我怎么做呢?我用FormData尝试了这个技巧,但没有成功:
Object
lastModifiedDate: "2009-07-14T05:32:31.000Z"
name: "Chrysanthemum.jpg"
size: 879394
type: "image/jpeg"
webkitRelativePath: ""
__proto__: Object