我正在为我的客户端应用程序使用 ExtJS 4.1.1。我需要将文件上传到套接字服务器。我知道我可以使用此处描述的 WebSocket 扩展向套接字服务器发送消息。但我不确定这是否适用于文件。
我会感谢任何曾经面临过此类任务的人的建议。它不必使用 ExtJS WebSocket 扩展来完成,但必须在客户端使用 ExtJS 来完成。我正在为我的套接字服务器使用 Netty,但我认为这在这里无关紧要。
更新:
按照@Ee-P 的建议,我尝试使用这个扩展。但是,该扩展会引发异常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();
任何关于我可能做错了什么或替代方案的想法都将非常感激。