Javascript 将图像作为blob上载到SAP netweaver网关oData模型

Javascript 将图像作为blob上载到SAP netweaver网关oData模型,javascript,ajax,odata,blob,sapui5,Javascript,Ajax,Odata,Blob,Sapui5,我正在尝试使用以下方法通过网关oData模型将在SAPUI5应用程序上捕获的图像上传到SAP服务器 你可以在下面找到我的代码。(imageData是画布对象) imageData.toBlob(函数(blob){ var reader=new FileReader(); reader.readAsArrayBuffer(blob);//数组缓冲区 reader.onload=函数(evt){ var fileTarget=evt.target.result; var oModel=new sa

我正在尝试使用以下方法通过网关oData模型将在SAPUI5应用程序上捕获的图像上传到SAP服务器

你可以在下面找到我的代码。(imageData是画布对象)

imageData.toBlob(函数(blob){
var reader=new FileReader();
reader.readAsArrayBuffer(blob);//数组缓冲区
reader.onload=函数(evt){
var fileTarget=evt.target.result;
var oModel=new sap.ui.model.odata.ODataModel(“”);
oModel.refreshSecurityToken(
功能(a、b){
oModel.oHeaders={
“x-csrf-token”:b.标题[“x-csrf-token”],
“slug”:notifNum+”,检查图像,PNG,N“,
“内容类型”:“图像/png”,
};
oModel.create(“/”,fileTarget{
//合并:对,
成功:功能(postData、响应){
var x;
警惕(“成功”);
},
错误:函数(错误){
警报(“epic失败”)
}
});
},职能(a){
successFaultCallBack.apply(上下文[a,false]);
},假);
}
},“图像/png”);
但是当我在服务器上调试请求时,图像内容被截断为285个字符(通常图像内容有500000个字符)。但是,在浏览器上,我可以看到内容长度是正确的(在oModel.create方法之前执行fileTarget.byteLength)。
我这里缺少什么?

您在网关服务中为图像字段设置了什么数据类型?数据类型是xstring。我的意思是在网关服务中。这个
imageData.toBlob(function(blob){
var reader = new FileReader();
reader.readAsArrayBuffer(blob); //array buffer

reader.onload = function (evt){ 
 var fileTarget = evt.target.result;


  var oModel =  new sap.ui.model.odata.ODataModel("<server url>") ;

 oModel.refreshSecurityToken(
function(a, b) {
 oModel.oHeaders = {
                  "x-csrf-token" : b.headers["x-csrf-token"],
                  "slug" : notifNum + ",inspectionImage,PNG,N",
                   "Content-Type" : "image/png",                                         
    };
 oModel.create('/<service name>',fileTarget,{
           //merge : true,
           success : function(postData, response){

            var x;
            alert("success");

              },
           error : function(error){
              alert("epic fail")
           }
    });
    }, function(a) {
           successFaultCallBack.apply(context,[a, false]);
        }, false);


}
},"image/png");