Uploadcollection发送文件但无法打开?

时间:2018-11-16 18:39:35

标签: javascript file sapui5

这是东西。我正在尝试使用UploadCollection sapui5和使用ajax的发布请求将文件从我的应用程序上传并发送到SAP网关。

有人要求我以xstring格式(一个接一个)发送每个文件,以便后端服务可以返回正确的响应。

这就是我试图获取上传文件内容的方式

new sap.m.UploadCollection({
                    id:                        'upFiles',
                    numberOfAttachmentsText:   'Adjuntar archivos',
                    showSeparators:            'All',
                    fileType:                  ['jpg','jpeg','png','pdf','ods','pptx','xlsm','docx','doc', 'odt', 'docm','ppt','xlsx','rar','zip'], 
                    noDataText:                'No se han cargado archivos todavia',
                    class:                     'docpago-upload',
                    uploadUrl:                 '/sap/opu/odata/SAP/ZGWRE_WF_FILES_SRV/WfFileCollectionSet',
                    maximumFilenameLength:     120,
                    maximumFileSize:           10,
                    multiple:                  true,
                    uploadEnabled:             true,
                    terminationEnabled:        true,
                    change: function(oEvent) {

                        var file = oEvent.getParameter("files");
                        var numfiles = oEvent.getParameter("files").length;
}
});

这就是我试图通过ajax发布请求发送文件的方式

                                                jQuery.ajax({
                                                    url: sUrlUpload,
                                                    type: "POST",
                                                    data: file, //Files I want to send
                                                    contentType: "application/json",
                                                    datatype : "text",
                                                    headers: {
                                                        'X-CSRF-Token': token, //token generated to send request
                                                        'slug': slug  //a parameter I need to do some stuff
                                                    },
                                                    success: function (data, textStatus, XMLHttpRequest) {
                                                        console.log('Uploaded files: ' + JSON.stringify(data));


                                                    },
                                                    error: function(oError) {
                                                        console.log('Error: ' + JSON.stringify(oError.responseText))
                                                    }
                                                });

由于某种原因,在sap网关端,文件已成功上传,但由于程序说“无效格式”,“损坏的文件”等而无法打开单个文件。我认为是因为我没有以适当的方式传递文件的内容。知道有什么问题吗?

1 个答案:

答案 0 :(得分:0)

您的MGW_APPL_SRV_RUNTIME〜CREATE_STREAM实现如何?

应该是这样的:

  METHOD /IWBEP/IF_MGW_APPL_SRV_RUNTIME~CREATE_STREAM.
    DATA: ls_key_tab                   TYPE /iwbep/s_mgw_name_value_pair,
          lt_key_tab                   TYPE /iwbep/t_mgw_name_value_pair,
          ls_document                  TYPE <YOUR TABLE>,
          lv_documentid                TYPE char100.

    CASE iv_entity_name.
      WHEN '<YOUR ENTITY NAME>'.
        READ TABLE it_key_tab WITH KEY name = 'DocumentId' INTO ls_key_tab.

        ls_document-documentid = ls_key_tab-value.
        ls_document-mimetype = is_media_resource-mime_type.
        ls_document-filename = iv_slug.
        ls_document-value = is_media_resource-value.
        ls_document-sydate = sy-datum.
        ls_document-sytime  = sy-uzeit.
        DELETE FROM <YOUR TABLE> WHERE documentid = ls_document-documentid.
        INSERT INTO <YOUR TABLE> VALUES ls_document.

        fileupdset_get_entity(
          EXPORTING
            iv_entity_name     = iv_entity_name
            iv_entity_set_name = iv_entity_set_name
            iv_source_name     = iv_source_name
            it_key_tab         = it_key_tab
            it_navigation_path = it_navigation_path
          IMPORTING
            er_entity          = ls_document ).

        copy_data_to_ref( EXPORTING is_data = ls_document
                          CHANGING  cr_data = er_entity ).
    ENDCASE.

  ENDMETHOD.

在表上,您应该有一个字段,如DocumentId这样的字段将用作主键。

然后您可以将网址称为“ / sap / opu / odata / SAP / ZGWRE_WF_FILES_SRV / WfFileCollectionSet('DocumentIdHere')”

要检索文件,您只需向url“ / sap / opu / odata / SAP / ZGWRE_WF_FILES_SRV / WfFileCollectionSet('DocumentIdHere')/ $ value”发出GET请求

很好的例子herehere。希望有帮助!