From 3466e45a5ee1aa73d77927e8210daa1ac886152a Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 16 Jan 2023 09:09:05 -0600 Subject: [PATCH] Update to do download via xhr post, to get auth header --- src/qqq/pages/processes/ProcessRun.tsx | 53 ++++++++++++++++++++------ 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/src/qqq/pages/processes/ProcessRun.tsx b/src/qqq/pages/processes/ProcessRun.tsx index 2ddd9f0..262a34c 100644 --- a/src/qqq/pages/processes/ProcessRun.tsx +++ b/src/qqq/pages/processes/ProcessRun.tsx @@ -217,6 +217,41 @@ function ProcessRun({process, defaultProcessValues, isModal, isWidget, isReport, setShowFullHelpText(!showFullHelpText); }; + const download = (url: string, fileName: string) => + { + const qController = Client.getInstance(); + + let xhr = new XMLHttpRequest(); + xhr.open("POST", url); + xhr.responseType = "blob"; + let formData = new FormData(); + formData.append("Authorization", qController.getAuthorizationHeaderValue()) + + // @ts-ignore + xhr.send(formData); + + xhr.onload = function(e) + { + if (this.status == 200) + { + const blob = new Blob([this.response]); + + const a = document.createElement("a"); + document.body.appendChild(a); + + const url = window.URL.createObjectURL(blob); + a.href = url; + a.download = fileName; + a.click(); + window.URL.revokeObjectURL(url); + } + else + { + setProcessError("Error downloading file", true) + } + }; + }; + //////////////////////////////////////////////////// // generate the main form body content for a step // //////////////////////////////////////////////////// @@ -463,20 +498,16 @@ function ProcessRun({process, defaultProcessValues, isModal, isWidget, isReport, { component.type === QComponentType.DOWNLOAD_FORM && ( - - - - Download - + + + Download - - + download(`/download/${processValues.downloadFileName}?filePath=${processValues.serverFilePath}`, processValues.downloadFileName)} sx={{cursor: "pointer"}}> + download_for_offline - - {processValues.downloadFileName} - - + {processValues.downloadFileName} +