Post Arraybuffer

Post Arraybuffer

本文关键字:Arraybuffer Post      更新时间:2023-10-07

我有以下两种方法可以将图像上传到远程servlet。由于某种原因,第二个参数,即arraybuffer,没有写入post请求,我正在试图弄清楚为什么会发生这种情况。有人能帮我做这件事吗。

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))

好吧,在GURU的帮助下,我解决了这个问题。显然ARRAYBUFFER已经过时了,真正的解决方案是按原样发布未签名的缓冲区。但即使如此,我也需要将AJAX响应类型设置为ARRAYBUFFER,然后不使用JQuery$.post,但使用原始纯XHTTPRequest。