在SAP UI5中从网关下载附件文件时出现问题

2020-08-26 02:29发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我一直坚持使用UI5自定义应用程序将任何文件格式从gatewayservice下载到本地系统。

它可以使用浏览器下载器下载文件。 但并非始终如一。 网关服务是根据发布

下面是我的上传方法(文件读取器调用)的控制器代码

 reader.onload =函数(e){
     var sContent = e.currentTarget.result.replace(" data:" + file.type +"; base64,","");
     var sAttachService =" https://<<服务网址>/Attachments001Set(" +
        "" ReqNo ='" + sRequestNo +"',ProcessStep ='" + sStatus +"')/$ value";
     var oModel = that.getOwnerComponent()。getModel();
     var sToken = oModel.getSecurityToken();
    
     $ .ajaxSetup({
      快取:false
     });
     jQuery.ajax({
      网址:sAttachService,
      快取:false,
      contentType:false,
      processData:否,
      数据:sContent,
      类型:" PUT",
      beforeSend:函数(xhr){
       xhr.setRequestHeader(" X-CSRF-Token",sToken);
       xhr.setRequestHeader(" content-type",file.type);
       xhr.setRequestHeader(" slug",file.name);
      },
      成功:函数(oData){
      },
      错误:函数(oError){
      }
     });
    }; 

下载文件的控制器代码(AJAX调用GET操作)

 var sAttachService =" <<服务URL>/Attachments001Set(" +
     "" ReqNo ='" + sRequestNo +"',ProcessStep ='" + sStatus +"')/$ value";
    var oModel = this.getOwnerComponent()。getModel();
    var sToken = oModel.getSecurityToken();

 $ .ajaxSetup({
     快取:false
    });

    jQuery.ajax({
     网址:sAttachService,
     快取:false,
     contentType:false,
     processData:否,
     类型:" GET",
     beforeSend:函数(xhr){
      xhr.setRequestHeader(" X-CSRF-Token",sToken);
      xhr.setRequestHeader(" content-type",GFileType);
     },
     成功:函数(oData){
      var sTemp ="";
      如果(sFileType ===" application/pdf"){
       sTemp ="数据:应用程序/八位字节流; base64,";
      }其他{
       sTemp ="数据:" + sFileType +"; base64,";
      }
      var sString = sTemp + oData;
      var url = window.URL.createObjectURL = sString;
     //window.location.assign(url);
      window.open(url,'_blank');
     },
     错误:函数(oError){
     }
    });
 

如果我在处理PDF和其他文件类型的文件内容时做错了事,请告诉我。

等待专家评论。

预先感谢

Manoj

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我一直坚持使用UI5自定义应用程序将任何文件格式从gatewayservice下载到本地系统。

它可以使用浏览器下载器下载文件。 但并非始终如一。 网关服务是根据发布

下面是我的上传方法(文件读取器调用)的控制器代码

 reader.onload =函数(e){
     var sContent = e.currentTarget.result.replace(" data:" + file.type +"; base64,","");
     var sAttachService =" https://<<服务网址>/Attachments001Set(" +
        "" ReqNo ='" + sRequestNo +"',ProcessStep ='" + sStatus +"')/$ value";
     var oModel = that.getOwnerComponent()。getModel();
     var sToken = oModel.getSecurityToken();
    
     $ .ajaxSetup({
      快取:false
     });
     jQuery.ajax({
      网址:sAttachService,
      快取:false,
      contentType:false,
      processData:否,
      数据:sContent,
      类型:" PUT",
      beforeSend:函数(xhr){
       xhr.setRequestHeader(" X-CSRF-Token",sToken);
       xhr.setRequestHeader(" content-type",file.type);
       xhr.setRequestHeader(" slug",file.name);
      },
      成功:函数(oData){
      },
      错误:函数(oError){
      }
     });
    }; 

下载文件的控制器代码(AJAX调用GET操作)

 var sAttachService =" <<服务URL>/Attachments001Set(" +
     "" ReqNo ='" + sRequestNo +"',ProcessStep ='" + sStatus +"')/$ value";
    var oModel = this.getOwnerComponent()。getModel();
    var sToken = oModel.getSecurityToken();

 $ .ajaxSetup({
     快取:false
    });

    jQuery.ajax({
     网址:sAttachService,
     快取:false,
     contentType:false,
     processData:否,
     类型:" GET",
     beforeSend:函数(xhr){
      xhr.setRequestHeader(" X-CSRF-Token",sToken);
      xhr.setRequestHeader(" content-type",GFileType);
     },
     成功:函数(oData){
      var sTemp ="";
      如果(sFileType ===" application/pdf"){
       sTemp ="数据:应用程序/八位字节流; base64,";
      }其他{
       sTemp ="数据:" + sFileType +"; base64,";
      }
      var sString = sTemp + oData;
      var url = window.URL.createObjectURL = sString;
     //window.location.assign(url);
      window.open(url,'_blank');
     },
     错误:函数(oError){
     }
    });
 

如果我在处理PDF和其他文件类型的文件内容时做错了事,请告诉我。

等待专家评论。

预先感谢

Manoj

付费偷看设置
发送
1条回答
My梦
1楼-- · 2020-08-26 02:59

您好 Manoj Mohanty

您为什么使用ajax调用?

因为可以使用odata模型本身,所以甚至更好的方法是使用上载集合或文件上载器,该文件可以为您处理很多事情。

请使用以下博客作为参考 ui5代码,它对于上传集合和文件上传器都类似。

https://blogs.sap.com/2018/09/18/object-services-attachments-using-uploadcollection/

在上面的博客中,有一些代码 编写以使用filereader读取文件数据,仅在要显示自定义图像的情况下才需要,我认为控件会自动显示它,不记得确切了。

谢谢

马赫什语

一周热门 更多>