是否可以使用ODataModel的create
方法将文件上传到SAP GW?
我将图像作为Base64字符串发送到后端。在后端执行create-stream方法,并在参数is_media_resource
中填充该值。现在,我调用一个功能模块以将图像保存到订单中。
但是当我查看订单附件时,我可以选择“图像”,但是它什么也没有显示。
我的其他代码:
oModel.create(
sPath, {
value: oEvent.detail.base64
},
{
headers: {
slug: oEvent.detail.filename
},
success: function (oData, oResponse) {
var aPhotolist = oListsModel.getProperty("/photoList");
aPhotolist.results.push(oData);
oListsModel.setProperty("/photoList", aPhotolist);
oCarousel.getBinding("pages").refresh();
oDialog.close();
sap.m.MessageToast.show(JSON.parse(oResponse.headers["sap-message"]).message, {
closeOnBrowserNavigation: false
});
},
error: function (oError) {
MessageBox.error(JSON.parse(oError.responseText).error.message.value);
oDialog.close();
}
}
);
答案 0 :(得分:0)
现在我找到了解决方法:
var sPath = this.getBindingContext().getPath() + "/ToAttachments",
oListsModel = this.getModel("listsModel"),
oCarousel = this,
imgData = JSON.stringify(oEvent.detail.base64);
oCarousel.setBusy(true);
this.getBindingContext().getModel().create(
sPath,
imgData, {
headers: {
slug: oEvent.detail.filename
},
success: function (oData, oResponse) {
var aPhotolist = oListsModel.getProperty("/photoList");
aPhotolist.results.push(oData);
oListsModel.setProperty("/photoList", aPhotolist);
oCarousel.getBinding("pages").refresh();
oCarousel.setBusy(false);
sap.m.MessageToast.show(JSON.parse(oResponse.headers["sap-message"]).message, {
closeOnBrowserNavigation: false
});
},
error: function (oError) {
oCarousel.setBusy(false);
MessageBox.error(JSON.parse(oError.responseText).error.message.value);
}
});
首先,您必须将图像数据转换为字符串。
在后端,从参数is_media_resource
中获取值,然后首先将其从xstring转换回string。
lf_data = is_media_resource-value.
lo_conv_x2c = cl_abap_conv_in_ce=>create( ).
lo_conv_x2c->convert( EXPORTING input = lf_data
IMPORTING data = base64_string ).
之后,将字符串再次转换为xstring。现在是一个xstring,可以由SAP解释
CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING
b64data = base64_string
IMPORTING
bindata = lf_data
EXCEPTIONS
ssf_krn_error = 1
ssf_krn_noop = 2
ssf_krn_nomemory = 3
ssf_krn_opinv = 4
ssf_krn_input_data_error = 5
ssf_krn_invalid_par = 6
ssf_krn_invalid_parlen = 7
OTHERS = 8.
SAP似乎在解释base64字符串vom Javascript时遇到了一些问题。