在SAPUI5中上载文件并发送到网关服务器
我很难找到一种方法来发送上传的文件并将其发送到网关服务器。我使用的是基本的FileUploader控件在SAPUI5中上载文件并发送到网关服务器,sapui5,Sapui5,我很难找到一种方法来发送上传的文件并将其发送到网关服务器。我使用的是基本的FileUploader控件 ***<u:FileUploader id="fileUploader" name="myFileUpload" uploadUrl="upload/" width="400px" tooltip="Upload your file to the local server" uploa
***<u:FileUploader
id="fileUploader"
name="myFileUpload"
uploadUrl="upload/"
width="400px"
tooltip="Upload your file to the local server"
uploadComplete="handleUploadComplete"/>
<Button
text="Upload File"
press="handleUploadPress"/>***
我应该在leuploader.upload()的之后添加什么代码才能有一个可以传递到OData设备附件属性的xstring
谢谢要做的第一件事是确保您拥有能够处理媒体类型和流的网关服务。要进行设置,您需要将处理文件内容的实体设置为媒体类型,并将处理流的逻辑设置到位(CREATE_STREAM)。您可以在中找到有关如何执行此操作的更多信息 在UI5应用程序中,您必须将上载控件的URL设置为,例如
/sap/opu/odata/sap/awome_SERVICE/Customers('000012456')/$value
,以便通过刚刚实现的CREATE_STREAM方法处理文件
当上传最终进行时,您需要处理两个头参数;slug
和CSRF令牌
。slug头应设置为例如文件名,而CSRF令牌需要使用飞行前请求进行检索。要设置标题,可以使用以下内容:
oFileUploader.addHeaderParameter(new FileUploaderParameter({
name: "x-csrf-token",
value: _csrfToken
}));
var _csrfToken = "";
jQuery.ajax({
url: "/sap/opu/odata/sap/AWESOME_SERVICE",
headers: {
"X-CSRF-Token": "Fetch",
"X-Requested-With": "XMLHttpRequest",
"DataServiceVersion": "2.0"
},
type: "GET",
contentType: "application/json",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
_csrfToken = jqXHR.getResponseHeader('x-csrf-token');
}
});
slug
头参数可以以类似的方式设置,并且应该包含标识文件的内容,例如文件名或id
要确定CSRF令牌,可以执行以下操作:
oFileUploader.addHeaderParameter(new FileUploaderParameter({
name: "x-csrf-token",
value: _csrfToken
}));
var _csrfToken = "";
jQuery.ajax({
url: "/sap/opu/odata/sap/AWESOME_SERVICE",
headers: {
"X-CSRF-Token": "Fetch",
"X-Requested-With": "XMLHttpRequest",
"DataServiceVersion": "2.0"
},
type: "GET",
contentType: "application/json",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
_csrfToken = jqXHR.getResponseHeader('x-csrf-token');
}
});
有了正确的头参数,将文件发送到正确配置的网关实体应该可以帮助您上传文件。首先要做的是确保您拥有能够处理媒体类型和流的网关服务。要进行设置,您需要将处理文件内容的实体设置为媒体类型,并将处理流的逻辑设置到位(CREATE_STREAM)。您可以在中找到有关如何执行此操作的更多信息 在UI5应用程序中,您必须将上载控件的URL设置为,例如
/sap/opu/odata/sap/awome_SERVICE/Customers('000012456')/$value
,以便通过刚刚实现的CREATE_STREAM方法处理文件
当上传最终进行时,您需要处理两个头参数;slug
和CSRF令牌
。slug头应设置为例如文件名,而CSRF令牌需要使用飞行前请求进行检索。要设置标题,可以使用以下内容:
oFileUploader.addHeaderParameter(new FileUploaderParameter({
name: "x-csrf-token",
value: _csrfToken
}));
var _csrfToken = "";
jQuery.ajax({
url: "/sap/opu/odata/sap/AWESOME_SERVICE",
headers: {
"X-CSRF-Token": "Fetch",
"X-Requested-With": "XMLHttpRequest",
"DataServiceVersion": "2.0"
},
type: "GET",
contentType: "application/json",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
_csrfToken = jqXHR.getResponseHeader('x-csrf-token');
}
});
slug
头参数可以以类似的方式设置,并且应该包含标识文件的内容,例如文件名或id
要确定CSRF令牌,可以执行以下操作:
oFileUploader.addHeaderParameter(new FileUploaderParameter({
name: "x-csrf-token",
value: _csrfToken
}));
var _csrfToken = "";
jQuery.ajax({
url: "/sap/opu/odata/sap/AWESOME_SERVICE",
headers: {
"X-CSRF-Token": "Fetch",
"X-Requested-With": "XMLHttpRequest",
"DataServiceVersion": "2.0"
},
type: "GET",
contentType: "application/json",
dataType: 'json',
success: function(data, textStatus, jqXHR) {
_csrfToken = jqXHR.getResponseHeader('x-csrf-token');
}
});
有了正确的头参数,将文件发送到正确配置的网关实体应该可以让您上传文件。关于OData网关文件上传的精彩教科书解释!要是我刚才能有个清楚的解释就好了,这样我就不会浪费很多时间了:)谢谢罗宾。上传有点痛苦,恐怕会一直这样。幸运的是,Willard提到他正在使用SAP网关作为后端。如果您上传到例如Azure,则解决方案可能需要完全不同。幸运的是,这些控件提供了大量的可配置性,因此您可以处理后端系统的怪癖。但这可能会让那些刚开始使用这项技术的人更加困难。@jpenninkhof您如何将文档上传整合到一个批次中request@willardChingarande我宁愿不那样做。您想将其推送到批处理请求中有什么具体原因吗?@jpenninkhof其实没有。为了知识的目的。因此,我假设如果您需要上传文档,并且在同一个应用程序中执行一些与上传无关的操作,那么您将有两个单独的请求,一个是对所有其他请求的批处理请求,另一个是对OData Gateway文件上传的上传说明!要是我刚才能有个清楚的解释就好了,这样我就不会浪费很多时间了:)谢谢罗宾。上传有点痛苦,恐怕会一直这样。幸运的是,Willard提到他正在使用SAP网关作为后端。如果您上传到例如Azure,则解决方案可能需要完全不同。幸运的是,这些控件提供了大量的可配置性,因此您可以处理后端系统的怪癖。但这可能会让那些刚开始使用这项技术的人更加困难。@jpenninkhof您如何将文档上传整合到一个批次中request@willardChingarande我宁愿不那样做。您想将其推送到批处理请求中有什么具体原因吗?@jpenninkhof其实没有。为了知识的目的。因此,我假设如果您需要上传文档,并且在同一个应用程序中执行一些与上传无关的操作,那么您将有两个单独的请求,一个用于所有其他请求的批处理请求,另一个用于上传