用JavaScript流二进制流

问题描述:

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

我在尝试下载文件时遇到了一些安全限制问题,但我不确定我想要做的事实际上是否可行。使用任何东西,但“JSONP”作为类型呈现象这样的错误:

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

我有一些jQuery的代码在这里,我希望会读取压缩文件和BLOB还给我。我猜想认为JSONP可以提供刚刚填充的json的二进制数据insta是天真的。

$(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); 
} 

这是我得到的错误,我想是因为我设法得到压缩的数据,而不是JSON数据。

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

无论如何,如果任何人有一个线索,如果它可以读取从第三方服务器一个zip文件并将其保存为二进制BLOB在JavaScript变量,我会非常高兴。

+0

据我所知,jsonp只是创建一个'

+0

JSONP期望JSON数据,而不是二进制流。另一台服务器不会给你一个JASON MIME类型,所以这是行不通的。 – 2013-04-04 16:52:33

+0

@BradM感谢您的快速回复。所以我想现在有读取从本地客户端上使用JavaScript的服务器的zip文件? – span 2013-04-04 19:46:16

JSONP需要JSON数据,而不是二进制流。其他服务器不会给你一个JSON MIME类型 - 它将是一个ZIP文件,所以这是行不通的。

+0

你在一年前写过这篇文章,而我在使用JSONP传输二进制数据时遇到了同样的问题,过去一年有什么变化? – Gilad 2014-05-13 08:34:06