SAPUI5文件下载上传上传已损坏

2020-08-25 02:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)有人可以帮助我吗? 我已经在UI...

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

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


有人可以帮助我吗? 我已经在UI5中实现了文件上传/下载,该文件似乎可以正常工作,但是当我下载文件时,文件损坏了,无法打开。 目前,我仅测试图像文件:

  new sap.ui.unified.FileUploader({
                     buttonOnly:是的,
                     buttonText:"上传文件",
                     图标:" sap-icon://upload",
                     更改:function(oEvent){
                         var oFileUploader = oEvent.getSource();
                         oItem = oFileUploader.getParent()。getParent()。getParent();
                         var sPath = oItem.getBindingContext()。getPath();
                         var files = oEvent.getParameter(" files");
                         var file = files [0];
                         如果(文件){
                             var oNewFile = {
                                 ID:that.count ++,
                                 SurveyAnswerID:oSA.ID,
                                 文件名:oEvent.getParameter(" newValue"),
                                 FileBinary:null,
                                 MimeType:"图片/jpeg",
                                 模式:" POST"
                             };
                             var reader = new FileReader();
                             reader.onload = function(evt){
                                 var binaryString = evt.target.result;
                                 oNewFile.FileBinary = binaryString;
                             };
                             reader.readAsBinaryString(file);
                         }其他{
                             oNewFile.FileBinary ="";
                             oNewFile.FileName ="";
                             MessageToast.show("文件上传出错。\ n请重试"")
                         }
                         that._pushItemToFileUploadModel(oNewFile.ID,oNewFile);
                         that._getFileUploadModel()。refresh();
                     }
                 })
  

下载代码:

  selectionChange:function(oEvent){
             var item = oEvent.getSource()。getSelectedItem();
             var model = that._getFileUploadModel();
             如果(项目){
                 var a = window.document.createElement('a');
                 a.hraf= window.URL.createObjectURL(new Blob([item.getDocumentId()],{
                     类型:item.getMimeType()
                 }));
                 a.download = item.getFileName();
                //将锚点附加到主体。
                 document.body.appendChild(a);
                 a.click();
                //从主体上移除锚点
                 document.body.removeChild(a);
             }

             尝试{
                 oEvent.getSource()._ oList.removeSelections();
             }抓住(e){
                //没做什么
             }

         },
  
2条回答
CPLASF-自律
2020-08-25 02:33

我遇到了同样的问题,但仅适用于excel文件。其他文件(pdf,doc)也可以。 某种原因是您调用上载方法时Fileloader不支持xls和xlsx。 到现在为止,应该有一个新的控件了。 我的解决方法是在创建内容并将其传递到有效负载中时编码为base64。

确保在实体上禁用创建流(禁用媒体属性),并让其仅调用create_entity方法并更新oModel.create上的后端表。

通过调用CREATE_STREAM,可以通过媒体属性进行下载。

我的下载功能在另一个应用程序上,并调用了另一个oData服务。 我只是使用了URLHelper。 但是,如果您使用相同的oData服务,则始终可以在相同的oData中创建一个不同的实体,以便在Media属性为打开的情况下进行下载。

一周热门 更多>