2013-05-03 32 views
0

我为我的客户端应用程序使用ExtJS 4.1.1。我需要将文件上传到套接字服务器。我知道我可以使用描述为here的WebSocket扩展将消息发送到套接字服务器。但我不确定这是否可以与文件一起使用。ExtJS:发送文件到套接字服务器

我会很感激任何以前遇到过这样的任务的人的建议。它不必使用ExtJS WebSocket扩展来完成,但它必须在客户端使用ExtJS来完成。我使用Netty作为套接字服务器,但我认为这在这里并不重要。

UPDATE:

继@的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(); 

什么我可能做错了或替代方案将非常赞赏任何想法。

回答

0

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

+0

谢谢@Ee-P,我会试试看。 – okello 2013-05-03 14:33:39

+0

没问题,我会亲自在/ app/util中创建一个单例类,并使用它将功能包装到WebsocketFileTransfer类中。如果你需要代码示例,请告诉我,我会为你解决一些问题:) – 2013-05-03 14:35:24

+0

非常感谢@ Ee-P。我已经离开了。我目前正在测试它。我会在一天结束时通知你。另外,感谢您的协助。我会先尝试一下。 – okello 2013-05-06 07:40:10

相关问题