2012-12-17 14 views
5

私はPlay Framework 2.0、Javascript、およびWebSocketsを使用しています。 例では、すべてのWebソケットの知識を持つAKKAの俳優がいます。単一のWebSockets.Inには、クライアント側からの着信要求を処理するListenerCallbackオブジェクトがあります。 クライアント側では、JSONでシリアル化された形式データをwebsocketに送るJavascript/jqueryがあります。これは単純な入力に対してはうまく機能します。しかし、今私はファイルで同じことをしたい。したがって、ファイルデータを何とかJSONデータ(たとえばbase64)に変換する必要があります。誰でもこれを正しく行う方法を知っていますか?私はJavascript内でファイルを "収集"し、それをJSON経由でWebSocketに送信したいと考えています。私はbase64は非常に効率的ではない、誰かが代替を持っている場合は、私に教えてください知っている。WebフレームからPlay Framework 2.0へのファイルアップロード

おかげ

答えて

4

ただし、新しいブラウザでのみサポートされるWebSocketFileReader APIを使用する必要があります。 JavascriptにはTypedArrayというデータ型があり、バイトの転送に使用できます。

​<form> 
    <input type="file" id="picture" /> 
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

あなたはファイル入力フィールド上のchangeイベントを観察する必要があります。たとえば、次のHTMLを与えられました。 Javascriptの側(jQueryの)上:

$("#picture").change(function(){ 
    var reader = new FileReader; 

    reader.onloadend = function (bytes) { 
     var ws = new WebSocket("ws://host/path"); 
     ws.send(bytes);   
    } 

    reader.readAsArrayBuffer(this.files[0]); 
}​);​ 

のWebSocket PDU最小限(2バイトのみヘッダ)フレーム、そしてときsend()、ブラウザはバイナリ転送のための適切なオペコードを設定するの世話をし、サーバー上の必要がありますされています生のバイトのストリームを読み取ることができるはずです。私は最小の実例を提供するためにPlay APIを探しています。

0

私はWebSocketを経由してファイルのアップロードについては知らないが、昔ながらのHTTP経由でそれがFormDataXMLHttpRequestオブジェクトを使用可能です。このarticleをご覧ください。

関連する問題