UNPKG

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
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); }, }); });