这是东西。我正在尝试使用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网关端,文件已成功上传,但由于程序说“无效格式”,“损坏的文件”等而无法打开单个文件。我认为是因为我没有以适当的方式传递文件的内容。知道有什么问题吗?
答案 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请求