1

我正在探索使用 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".

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

4

1 回答 1

1

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

于 2013-04-08T17:20:39.220 回答