You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAPUI5中oModel.create()上传文件无法打开的问题排查

问题分析与解决方案

问题根源

使用oModel.create()上传文件后损坏的核心原因是:SAPUI5的ODataModel(v2)默认会将请求payload序列化为JSON格式,你传入的二进制ArrayBuffer会被错误转换处理,导致文件内容篡改。而可用的$.ajax代码通过processData: false跳过数据序列化,同时显式指定文件contentType,确保二进制数据原样传输。

修复方案

在oModel.create()的配置参数中添加两个关键设置,和$.ajax保持一致:

  • processData: false:禁止模型自动序列化payload,直接发送原始二进制数据
  • contentType: sContentType:显式指定文件的MIME类型,避免模型默认设置为application/json

修改后的代码

onFileSelected: function (oEvent) {
  var oFile = oEvent.getParameter("files")[0];
  if (oFile) {
    var reader = new FileReader();
    reader.onload = function (e) {
      var binaryContent = e.target.result;            
      var oModel = this.getView().getModel();
                              
      oModel.refreshSecurityToken(function (data, response) {
        var sToken = response.headers['x-csrf-token'];
        var sObjectKey = "Placeholder";
        var sObjectType = "BUS2081";
        var sFileName = oFile.name;
        var sSlug = btoa(sFileName);
        var sContentType = oFile.type;
                
        var oPayload = binaryContent;
                
        oModel.create("/OriginalContentSet", oPayload, {
          headers: {
            "x-csrf-token": sToken,
            "Slug": sSlug,
            "Objectkey": sObjectKey,
            "Objecttype": sObjectType,
          },
          // 添加关键配置
          processData: false,
          contentType: sContentType,
          success: function (data) {
            MessageToast.show("Success");
          },
          error: function (oError) {
            MessageToast.show("Error");
          }
        });
      }.bind(this), function () {
        MessageToast.show("Error with the CSRF Token");
      });
    }.bind(this);
    reader.readAsArrayBuffer(oFile);
  } else {
    MessageToast.show("No file selected");
  }
}

补充说明

如果使用OData v4模型,二进制上传需借助sap.ui.model.odata.v4.ODataModel的createStream方法处理,但从代码结构判断你使用的是v2模型,上述修复即可解决问题。

内容的提问来源于stack exchange,提问作者derMasterOfDesaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 01:43:12