从浏览器到本地连接iPhone的文件传输

问题描述:

现在,我在我的iPhone应用程序上创建了一个HTTP服务器,并在那里托管了HTML。然后在iPhone的同一网络上的系统的浏览器*问它。我可以在浏览器上看到文件。从浏览器到本地连接iPhone的文件传输

现在使用WebSockets我试图从浏览器发送文件到应用程序,但它不工作。文字信息没问题,但没有数据。 作为一种解决方法,我通过Base64字符串尝试了它,但在这种情况下,套接字也已关闭。

对于使用JAVAScript上传我已经写了这段代码,在这里我尝试了通过发送Base64字符串的大小为200个字符的片段。

function sendFile() { 
     var preview = document.querySelector('img'); 
     var file = document.querySelector('input[type=file]').files[0]; 
     var reader = new FileReader(); 
     var rawData = new ArrayBuffer(); 


     reader.onloadend = function() { 
     var stringContent = reader.result; 
     preview.src = stringContent; 
     var array = stringContent.match(/.{1,200}/g); 
     for (var i = 0; i < array.length; i++) { 
      ws.send(array[i]); 
     }; 

     } 
    if (file) { 
     reader.readAsDataURL(file); 
    }else { 
     preview.src = ""; 
    } 
} 

在iPhone上侧中,我使用的WebSocket 从Libary CocoaHTTPServer

插座收于这一行。

Socket closed at this line.

编辑

经过大量的试验和错误,我才知道,这是发生的事情。如果我在苹果机的浏览器中打开这个,不以任何其它设备的情况下,像iPad,iPhone这样的浏览器。这是非常奇怪的用例,但它是真实的。

编辑II

经过大量的琢磨,我发现了一个线索这一点,这是很好的工作了的iPhone,iPad,iPod的& Opera浏览器,因为他们有老WebSocket的支持,我发现这个从here.

在这个问题上的盖伊有相反的情况,他正试图关闭这些浏览器的连接,在我的情况下,它的收盘于其他浏览器,如浏览器,Mozilla等,这是因为一些所谓的Hybi格式的数据包。这可能有助于某人为我的案例提出解决方案。

+0

为什么你使用websockets进行文件上传。不会有一个正常的html表单(也许有一个litle ajax)来完成这项工作吗? – Martin

+0

您能否提供详细资料? – Mrug

+0

WebSocket用于双向通信,意味着您可以随时将数据从服务器发送到连接的客户端,反之亦然。要将文件上传到服务器,这不是必须的,只需使用JQuery Upload(https://blueimp.github.io/jQuery-File-Upload/)等插件即可,事情变得更加简单。 – user1977204

ws:协议是允许的吗?例如​​3210

<access origin="ws://192.168.1.xx/*"/> 
+0

放置此文件的位置?我的服务器是运行在iPhone App内的CocoaHTTPServer – Mrug

我想你应该看看官方的CocoaHTTPServer的例子。有一个用于上传http文件:https://github.com/robbiehanson/CocoaHTTPServer/tree/master/Samples/SimpleFileUploadServer

+0

这可能是一种解决方法,但我实际上是在使用WebSockets寻找解决方案。 – Mrug