使用javascript流二进制流

时间:2013-04-04 16:48:23

标签: jquery cross-domain mime-types

我正在探索使用HTML5,JavaScript,WebSockets,MQTT和HTTP发送文件的不同方法。我一直在尝试从我的本地文件系统读取位于我的服务器上的zip文件,并将其作为二进制blob接收。一旦我有了这个二进制blob,我希望将它转发给其他客户端,但这是另一个问题。

我在尝试下载文件时遇到了一些安全限制问题而且我不确定我正在尝试做的事实际上是可行的。使用“jsonp”作为类型的其他任何东西都会出现如下错误:

Origin null is not allowed by Access-Control-Allow-Origin. 

我在这里有一些jQuery代码,我希望能读取zip文件并将blob返回给我。我想,认为JSONP可以提供刚填充的json的二进制数据实例是天真的。

$(document).ready(function() {
    $.ajax({
        url : 'http://example.com/myzip.zip',
        dataType : 'jsonp',
        jsonp : 'callback',
        jsonpCallback : 'jsonpCallback',
        success : function() {
            alert("success");
        }
    });

});

function jsonpCallback(data) {
    alert(data.message);
}

这是我得到的错误,我认为这是因为我试图获取zip数据而不是json数据。

Resource interpreted as Script but transferred with MIME type application/zip: "http://example.com/myzip.zip?callback=jsonpCallback&_=1365093133651".

无论如何,如果有人知道可以从第三方服务器读取zip文件并将其保存为javascript变量中的二进制blob,我会非常高兴。

1 个答案:

答案 0 :(得分:1)

JSONP需要JSON数据,而不是二进制流。另一台服务器不会给你一个JSON MIME类型 - 它将是一个ZIP文件,所以这不起作用。