【发布时间】:2015-10-30 14:53:47
【问题描述】:
我正在创建一个需要上传附件的 SAPUI5 应用。我还是很新用的SAPUi5。我想将上传的文件保存到数据库。我可以使用文档服务吗?如果是这样,请向我提供相关文档或教程。
【问题讨论】:
标签: file-upload sapui5
我正在创建一个需要上传附件的 SAPUI5 应用。我还是很新用的SAPUi5。我想将上传的文件保存到数据库。我可以使用文档服务吗?如果是这样,请向我提供相关文档或教程。
【问题讨论】:
标签: file-upload sapui5
我已经在我的 SAPUI5 应用程序中完成了这一操作,用于上传功能check out my gist.
onUpload: function(e) {
var fU = this.getView().byId("idfileUploader");
var domRef = fU.getFocusDomRef();
var file = domRef.files[0];
var reader = new FileReader();
reader.onload = function(oEvent) {
var strCSV = oEvent.target.result;
var arrCSV = strCSV.match(/[\w .]+(?=,?)/g);
var noOfCols = 6;
var headerRow = arrCSV.splice(0, noOfCols);
var data = [];
while (arrCSV.length > 0) {
var obj = {};
var row = arrCSV.splice(0, noOfCols);
for (var i = 0; i < row.length; i++) {
obj[headerRow[i]] = row[i].trim();
}
data.push(obj);
}
};
reader.readAsBinaryString(file);
}
【讨论】:
不管你使用DB还是Document Service,对于SAPUI5,
你可以使用sap.ui.unified.FileUploader。阅读更多here
示例 XML 代码为:
<sap.ui.unified:FileUploader
id="fileUploader"
width="100%"
uploadUrl=""
placeholder="Add attachment"
uploadOnChange="false"
uploadComplete="handleUploadComplete"
change="handleValueChange"
typeMissmatch="handleTypeMissmatch"
style="Emphasized"
useMultipart="false" >
</sap.ui.unified:FileUploader>
上传时请确保将 slug 和 x-csrf-token 添加到标头参数中。
例子:
var oFileUploader = _this.byId("fileUploader");
oFileUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({
name: "slug",
value: oFileUploader.getValue()
}));
oFileUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({
name: "x-csrf-token",
value: _this.oDataModel.getSecurityToken()
}));
oFileUploader.upload();
如果您使用的是 ABAP Netweaver 网关堆栈,则需要在 DPC_EXT 类中实现 CREATE_STREAM 方法。还需要确保网关模型支持具有“媒体”的特定 EventType。
【讨论】:
uploadFile:function{
var that = this;
var count = 0;
var o = "<URI>";
var h = new sap.ui.model.odata.ODataModel(o, true);
var d = "";
h.setSizeLimit(5000);
h.forceNoCache(true);
var b = ({
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/json",
"X-CSRF-Token": "Fetch",
});
OData.request({
requestUri: o,
method: "GET",
headers: b
}, function (e, j) {
d = j.headers["x-csrf-token"];
that.csrfToken = d;
that.getModel("oAppData").setProperty("/busyIndicators/uploadFile", true);
for (var l = 0; l < that.fileDataAD.length; l++) {
var i = "<URI>";
var h = new sap.ui.model.odata.ODataModel(i, true);
h.setSizeLimit(5000);
h.forceNoCache(true);
var b = ({
"X-CSRF-Token": that.csrfToken,
"Slug": that.fileDataAD[l].fileName + "|" + that.fileDataAD[l].fileType + "|" + "B" + "|" + reqId + "|" + 1
});
OData.request({
requestUri: i,
method: "POST",
headers: b,
data: that.fileDataAD[l].file
}, function (oData, oRes) {
count = count + 1;
if (count === that.fileDataAD.length) {
that._uploadCompleteAddDependent();
}
}.bind(this), function (oError) { }
}
});
}
其中fileDataAD 是缓冲区数组
【讨论】: