1

イメージをリモートサーブレットにアップロードする次の2つの方法があります。何らかの理由で、2 番目のパラメーターである arraybuffer がポスト リクエストに書き込まれず、なぜこれが起こっているのかを突き止めようとしています。誰かがこれについて私を助けてくれませんか。

setupBinaryMessage = function(metadata) {

    log(metadata);
    var msglen = metadata.length;
    var localcanvas =document.getElementById("image");
    var fullBuffer;
    var myArray;
    if(localcanvas){
        var localcontext = localcanvas.getContext('2d');
    //FOLLOWING 2 LINE OF CODE CONVERTS THE IMAGEDATA TO BINARY
        var imagedata = localcontext.getImageData(0, 0, localcanvas.width, localcanvas.height);
        var canvaspixelarray = imagedata.data;              
        var canvaspixellen = canvaspixelarray.length;               
        var msghead= msglen+"";
        var fbuflen = msglen +canvaspixellen+msghead.length;
        myArray = new ArrayBuffer(fbuflen);
        fullBuffer = new Uint8Array(myArray);
        for (var i=0; i< msghead.length; i++) {
            fullBuffer[i] = msghead.charCodeAt(i);
        }
        for (var i=msglen+msghead.length;i<fbuflen;i++) {
            fullBuffer[i] = canvaspixelarray[count];
            count++;
        };
        return  myArray;        
    } else 
        return null;

};

upladlImageWithPost= function() {
var message =JSON.stringify(this.data); 
var fullBuffer = this.setupBinaryMessage(message);
var formdata = {command : "post", imagedata : fullBuffer,};
alert(jQuery.isPlainObject( formdata ));
var imgPostRequest = $.post( "http://localhost:8080/RestClient/RestClientPOST",fullBuffer, function(response) {     
    response = response.trim();
    console.log(response);
    if(response == "SERVER_READY"){
        alert(response);
        try {

        }catch (error) {
            alert("Web Socket Error "+error.message);
        }
    } else {
        alert("SERVER ERROR");
    }
}.bind(this))
4

1 に答える 1

0

よし、GURU の助けを借りて、問題を解決しました。どうやら ARRAYBUFFER は廃止されており、実際の解決策は unisinged バッファをそのまま投稿することです。しかし、そのためにも、AJAX 応答タイプを ARRAYBUFFER に設定し、JQuery $.post を使用せずに元の純粋な XHTTPRequest を使用する必要があります。

ソース

于 2013-11-27T20:25:47.660 に答える