【问题标题】:ExtJS: Send file to a socket serverExtJS:将文件发送到套接字服务器
【发布时间】:2013-05-03 12:49:20
【问题描述】:

我正在为我的客户端应用程序使用 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();

非常感谢任何关于我可能做错了什么或替代方案的想法。

【问题讨论】:

    标签: extjs websocket extjs4.1


    【解决方案1】:

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

    【讨论】:

    • 谢谢@Ee-P,我试试看。
    • 没问题,我会亲自在 /app/util 中创建一个单例类,并使用它将功能包装到 WebsocketFileTransfer 类中。如果您需要代码示例,请告诉我,我会为您解决一些问题:)
    • 非常感谢@Ee-P。我已经离开了。我目前正在测试它。我会在一天结束前通知你。另外,感谢您提供帮助。我先试试看。
    • 你好@Ee-P。我一直在努力完成这项工作。当我向服务器发送文件时,我在套接字服务器端得到TextWebSocketFrame(text: STOR: {"filename":"archived.png","size":1381,"type":"binary","parameters":[]})。当我按照您的指定 (github) 将响应发送回客户端时,我会收到 Cannot read property 'size' of undefined
    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2015-06-21
    • 2011-08-17
    相关资源
    最近更新 更多