ExtJS:将文件发送到套接字服务器

时间:2013-05-03 12:49:21

标签: extjs websocket extjs4.1

我正在为我的客户端应用使用ExtJS 4.1.1。我需要将文件上传到套接字服务器。我知道我可以使用描述here的WebSocket扩展来向套接字服务器发送消息。但我不确定这是否适用于文件。

我会感谢任何曾经面临过这样一项任务的人的建议。它不必使用ExtJS WebSocket扩展来完成,但必须在客户端使用ExtJS完成。我正在使用Netty作为我的套接字服务器,但我认为这在这里并不重要。

更新

按照@ Ee-P的推荐,我尝试使用this extension。但是,该扩展会引发异常Uncaught TypeError: Cannot read property 'size' of undefined。我可以在服务器端收到文件详细信息,但我不确定如何在服务器端访问文件本身。我不确定是否发送了实际文件,或者它是否只是文件的详细信息。 @ Ee-P提到了一个包装类;我所做的就是包含JS文件和Mootools类。然后,在我的代码中,我有:

if(!WebSocketFileTransfer.supported()) {
            console.log('WebSocket File Transfer is not fully supported by your browser.');
            return;
        }
        var transfer = new WebSocketFileTransfer({
        url: 'ws://localhost:8087/ws',
        file: file,
        blockSize: 1024,
        type: WebSocketFileTransfer.binarySupported() ? 'binary' : 'base64',

        type: 'binary',
        progress: function(event) {
            console.log('File upload in progress');
        },

        success: function(event) {
            console.log('File successfully uploaded.');
        }

        });

        transfer.start();

对于我可能做错了什么或者替代方案的任何想法都将非常感激。

1 个答案:

答案 0 :(得分:0)

您可以在HTML5浏览器中使用Websocket上传文件,您只需要创建可以为您处理此问题的自定义类。在ExtJS中很容易做到这一点。只需在您的控制器中使用您的自定义类,您就可以开始使用了。例如,你可以使用这个:https://github.com/vincentdieltiens/WebSocketFileTransfer类并将它包含在你的ExtJS应用程序中,然后为它创建一个包装器并在你的控制器上使用它。