2013-11-25 41 views
0

我有以下兩種方法將圖像上傳到遠程servlet。出於某種原因,第二個參數是arraybuffer沒有寫入post請求,我試圖找出爲什麼會發生這種情況。有人能幫我解決這個問題嗎?發佈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)) 

回答

0

好吧經過GURU的一些幫助,我發現了這個問題。顯然,ARRAYBUFFER已經過時了,真正的解決方案是將unisinged緩衝區保持原樣。但即使如此,我需要將AJAX響應類型設置爲ARRAYBUFFER,然後不使用JQuery $ .post,但使用原始的純XHTTPRequest。

Source