我正在探索使用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,我将非常高兴。
JSONP需要JSON数据,而不是二进制流。另一个服务器不会给你一个JSON MIME类型——它将是一个ZIP文件,所以这将不起作用。