ui5_easy_use
Version:
CLI tool for SAP ui5 and SAPUI5 projects to initialize apps, generate pages, insert form and table components, manage routing, and automate i18n bindings
132 lines (106 loc) • 5.23 kB
JavaScript
sap.ui.define([
"sap/ui/core/mvc/Controller",
], function (Controller) {
"use strict";
return Controller.extend("${ez5.appName}.utilities.UploadeFile", {
constructor: function (currentController) {
Controller.apply(this, currentController);
this._currentController = currentController;
this.listObjFiles = [];
},
callUploadFiles: async function (finallData) {
if (this.listObjFiles.length === 0) {
return finallData;
}
for (const element of this.listObjFiles) {
const fileId = await this.onFileChangeX(element.oEvent);
finallData[element.key] = fileId;
}
return finallData;
},
onFileChangeX: function (oEvent) {
const oUploader = oEvent.getSource();
const oFile = oEvent.getParameter("files")[0];
return new Promise((resolve, reject) => {
if (oFile) {
const sFileName = oFile.name;
const sFileType = oFile.type || "application/octet-stream";
const sFormattedDate = this._getTimestamp();
const sSlugValue = `${this._currentController.userId}|${sFileName}|${sFormattedDate}|${sFormattedDate}`;
const sToken = this._currentController.getView().getModel().getSecurityToken();
this.setupUploaderHeaders(oUploader, sSlugValue, sFileType, sToken);
this.uploadFileAsync(oUploader)
.then(fileId => {
resolve(fileId);
oUploader.clear();
})
.catch(err => {
console.error("Upload failed:", err);
reject(err); // Reject the promise with the error
});
} else {
reject("No file selected"); // Reject if no file is selected
}
});
},
setupUploaderHeaders: function (oUploader, sSlugValue, sFileType, sToken) {
oUploader.removeAllHeaderParameters();
oUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({
name: "slug",
value: sSlugValue
}));
oUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({
name: "Content-Type",
value: sFileType
}));
oUploader.addHeaderParameter(new sap.ui.unified.FileUploaderParameter({
name: "X-CSRF-Token",
value: sToken
}));
},
uploadFileAsync: function (oUploader) {
return new Promise((resolve, reject) => {
oUploader.attachUploadComplete(function (oEvent) {
const sResponse = oEvent.getParameter("response");
if (sResponse) {
try {
const sFileIdMatch = sResponse.match(/UploadFileSet\('(.+?)'\)/);
if (sFileIdMatch && sFileIdMatch[1]) {
const sFileId = sFileIdMatch[1];
resolve(sFileId);
} else {
reject("File ID not found in response.");
}
} catch (e) {
console.error("Error extracting file ID from upload response:", e);
reject(e);
}
} else {
reject("No response received from the server.");
}
}.bind(this));
oUploader.upload();
});
},
_getTimestamp: function () {
const date = new Date();
return [
date.getFullYear(),
String(date.getMonth() + 1).padStart(2, "0"),
String(date.getDate()).padStart(2, "0"),
String(date.getHours()).padStart(2, "0"),
String(date.getMinutes()).padStart(2, "0"),
String(date.getSeconds()).padStart(2, "0")
].join("");
},
// 8699d98c-f306-46f5-ad32-aee37b36da7d.${ez5.appName}.${ez5.appName}/~fa2aaf3b-6f05-467e-acb2-f810b685d711~
// f0f60448-e251-47ac-b644-6afde4d28582.${ez5.appName}.${ez5.appName}/~4f786841-0c92-4b11-8ff2-06c89f09baf4~
downloadFile: function (sFileId) {
// Construct the download URL
const sServiceUrl = this._currentController.getView().getModel("env").getProperty("/isProduction") ? "/8699d98c-f306-46f5-ad32-aee37b36da7d.${ez5.appName}.${ez5.appName}/~fa2aaf3b-6f05-467e-acb2-f810b685d711~/sap/opu/odata/sap/ZBTP_ICTS_SRV_SRV" : "/sap/opu/odata/sap/ZBTP_ICTS_SRV_SRV";
const sDownloadUrl = `${sServiceUrl}/UploadFileSet('${sFileId}')/$value`;
// Trigger the download
sap.m.URLHelper.redirect(sDownloadUrl, true);
},
});
});