file-upload - sap.ui.unified.FileUploader 更改 http 方法/允许在 segw 上发布
问题描述
我正在处理 UI5 中的文件上传。我不能使用fileupload
via 关联,因为在写入表之前我需要二进制文件。
问题是sap.ui.unified.FileUploader
始终使用POST
HTTP 方法,这会导致后端系统出错:
405 Methode not allowed
我发现这个 SAP Blog FileUploader - 405 Method Not Allowed通过扩展控制和更改 HTTP 方法解决了这个问题。
我的问题是否有更标准的方法来实现这一目标?我没有在控件中找到任何属性来配置 HTTP 方法。
选项:
- 也许在 XHR 设置中?
- 您可以允许
POST
进入SEGW
或用户退出类吗?
解决方案
使用 SEGW 上传/下载
- 一步一步教你如何使用 SAPUI5 文件上传功能
- 通过 NetWeaver Gateway 上传/下载文件
- 上传文件到 SAP GW,从 SAP GW 下载文件 – 新技术
- 最新博客!!:使用网关在 SAP UI5 应用程序中上传/下载文件
上传前的二进制文件:只能通过 Defered 和 XHR
getBase64Promise: function (file) {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
var encoded = reader.result.replace("data:", "").replace(/^.*;base64,/, "");
if ((encoded.length % 4) > 0) {
encoded += "=".repeat(4 - (encoded.length % 4));
}
resolve(encoded);
};
reader.onerror = function () {
reject("error");
};
});
},
fileUploadChange: function (oControlEvent) {
var that = this;
var aFiles = oControlEvent.getParameters().files;
var currentFile = aFiles[0];
var sUrl = "yourNeeds..";
this.getBase64Promise(currentFile).then(function (data) {
that.xhrRequest(data, oView, sUrl);
});
},
xhrRequest: function (data, oView, url) {
var oImage = "data:image/png;base64, " + data;
oRequest = JSON.stringify(oImage);
var xhrReadyStateChange = function () {
if (this.readyState === this.DONE) {
console.log("200", JSON.parse(this.response));
}
};
var xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.addEventListener("readystatechange", xhrReadyStateChange);
xhr.open("POST", url, false); // setting request method & API endpoint, the last parameter is to set the calls as synchyronous
xhr.setRequestHeader("Accept", "application/json"); // adding request headers
xhr.setRequestHeader("Content-Type", "application/json"); // adding request headers
xhr.send(oRequest); // sending request
}
});
推荐阅读
- python - Pandas python 在IndexError中解决什么
- netbeans - FileNotFoundException NetBeans 8.2
- c# - 需要使用 C# 中的文本框对我的 WPF Datagrid 实现过滤器
- javascript - Beautiful Soup 无法删除所有脚本标签
- python - 如何从多个 .py 文件中获取字节码?
- python - 电脑上的 Kivy 应用程序在运行时打开并立即关闭
- java - 无法从扩展的 JPanel 类中看到 ImageIcon
- flutter - Flutter SDK 升级后 Flutter 应用无法运行
- c - 多线程客户端-服务器同步问题
- python - 解析巨大的 JSON 文件时出现内存错误