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

时间:2015-06-12 09:33:52

标签: javascript ios iphone websocket cocoahttpserver

目前,我已经在我的iPhone应用程序上创建了一个HTTP服务器,并在那里托管了HTML。然后在浏览器中访问位于iPhone同一网络中的系统。我可以在浏览器上看到文件。

现在使用WebSockets我正在尝试将文件从浏览器发送到应用程序 ,但它无法正常工作。文本消息没问题,但数据没有。 作为一种解决方法,我通过Base64字符串尝试了它,但在这种情况下也是套接字Get Closed。

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

    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方面,我使用了来自Libary的 WebSocket CocoaHTTPServer

此插座关闭了插座。

Socket closed at this line.

修改

经过大量试验和错误后,我才知道发生了这种情况如果我在Mac浏览器中打开这个,不是在任何其他设备的情况下&#39;像iPad,iPhone这样的浏览器。这是非常奇怪的用例,但确实如此。

编辑II

经过多次疑惑,我找到了一条线索,这对于iPhone,iPad,iPod和iPad都很有效。 Opera浏览器,因为它们有旧的websocket支持,我从here.找到了它。

在这个问题中,Guy有相反的情况,他试图关闭这些浏览器的连接,在我的情况下,它关闭其他浏览器,如chrome,Mozilla等。这是因为某些东西称为 Hybi格式化数据包。这可能有助于某人为我的案例提出解决方案。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

ws:允许协议?例如config.xml

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