2017-07-19 2 views
2

Ich benutze SAPUI5 UploadCollection für mehrere und sofortige Upload-Funktionalität.Anfrage Payload-Problem mit SAPUI5 UploadCollection

und ich bin mit Parametern wie dieses

  <parameters> 
       <UploadCollectionParameter name="Nbr" value="12" /> 
      </parameters> 
      <headerParameters> 
       <UploadCollectionParameter name="Nbr" value="12" /> 
      </headerParameters> 

Aber wenn ich sehe in Entwickler-Tools des Browsers Chrome Registerkarte Netzwerk, ich bin nicht anfordern Payload bekommen.

Der folgende Code verwende ich.

<UploadCollection 
       id="UploadCollection" 
       maximumFilenameLength="55" 
       maximumFileSize="10" 
       multiple="false" 
       showSeparators="All" 
       change="onChange" 
       fileSizeExceed="onFileSizeExceed" 
       selectionChange="onSelectionChange" 
       typeMissmatch="onTypeMissmatch" 
       uploadComplete="onUploadComplete" 
       beforeUploadStarts="onBeforeUploadStarts" 
       uploadTerminated="onUploadTerminated" 
       items="{MeterTicketsModel>/returnData}" 

       mode="MultiSelect"> 

       <toolbar> 
        <OverflowToolbar id="myId" > 
         <Title id="attachmentTitle"/> 
         <ToolbarSpacer/> 
         <Button id="downloadButton" text="Download" press="onDownloadItem" enabled="false" type="Transparent"></Button> 
         <Button id="versionButton" text="Upload a new version" press="onVersion" enabled="false" type="Transparent"></Button> 
         <UploadCollectionToolbarPlaceholder></UploadCollectionToolbarPlaceholder> 
        </OverflowToolbar> 
       </toolbar> 
       <items> 
        <UploadCollectionItem 
         documentId="{documentId}" 
         fileName="{MeterTicketsModel>fileName}" 
         mimeType="{mimeType}" 
         thumbnailUrl="{thumbnailUrl}" 
         url="{url}" 
         enableEdit="false" 
         enableDelete="false" 
         visibleDelete="false" 
         visibleEdit="false" 
         attributes="{path : 'attributes', templateShareable : 'true'}" 
         statuses="{path : 'statuses', templateShareable : 'true'}" 
         selected="{selected}"> 
         <attributes> 
          <ObjectAttribute 
           title="{title}" 
           text="{parts : ['text', 'type'], formatter : '.formatAttribute'}" 
           active="{active}"/> 
         </attributes> 
         <statuses> 
          <ObjectStatus 
           title="{title}" 
           text="{text}" 
           state="{state}" 
           icon="{icon}" 
           iconDensityAware="{iconDensityAware}" 
           textDirection="{textDirection}"/> 
         </statuses> 
        </UploadCollectionItem> 
       </items> 
       <parameters> 
        <UploadCollectionParameter name="Nbr" value="12" /> 
       </parameters> 
       <headerParameters> 
        <UploadCollectionParameter name="Nbr" value="12" /> 
       </headerParameters> 
      </UploadCollection> 

Obwohl ich Params in der Steuerung hinzugefügt habe, bekomme ich Request Payload nicht in der Konsole. Der folgende Code, den ich im beforeUploadStarts-Ereignis verwende.

onBeforeUploadStarts: function(oEvent) { 
    var oFileUploader = this.byId("UploadCollection"); 
      var sUrl = "some url"; 
      oFileUploader.setUploadUrl(sUrl); 
      var NbrParam = new sap.m.UploadCollectionParameter({ 
      name : "xyz", 
      value : 5 
      }); 

    oEvent.getParameters().addHeaderParameter(NbrParam); 
    oFileUploader.addParameter(NbrParam); 
}); 

Antwort

0

Fügen Sie diese in der Steuerung

onFileUploadChange: function (oEvent) { 
       var oUploadCollection = oEvent.getSource(); 
       // Header Token 
       var oCustomerHeaderToken = new UploadCollectionParameter({ 
        name: "x-csrf-token", 
        value: "securityTokenFromModel" 
       }); 
       oUploadCollection.addHeaderParameter(oCustomerHeaderToken); 
      }, 

Und

onBeforeUploadStarts: function (oEvent) { 
       var oCustomerHeader = new sap.m.UploadCollectionParameter({ 
        name: "slug", 
        value: oEvent.getParameter("fileName") 
       }); 
       oEvent.getParameters().addHeaderParameter(oCustomerHeader); 
      }, 

ich hatte das gleiche Problem, aber die oben genannten Korrekturen für mich gearbeitet. Sie werden die Nutzdaten der Anfrage in der Konsole immer noch nicht sehen, aber meine Backend-ABAP-Klasse empfing den Dateiinhalt.