From bc4d2547fdd7cc1081288127b2e5e32e7a6cbcdd Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Fri, 3 Nov 2023 00:01:58 +0530 Subject: [PATCH] add progess bar for file_upload --- .../src/components/fields/FileUpload.js | 84 ++++++++++++------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/apps/OpenSign/src/components/fields/FileUpload.js b/apps/OpenSign/src/components/fields/FileUpload.js index bfb47baa4..2b0840276 100644 --- a/apps/OpenSign/src/components/fields/FileUpload.js +++ b/apps/OpenSign/src/components/fields/FileUpload.js @@ -1,7 +1,8 @@ import React, { useState, useEffect } from "react"; import { SaveFileSize } from "../../constant/saveFileSize"; -import Parse from "parse"; -import sanitizeFileName from "../../primitives/sanitizeFileName"; +// import Parse from "parse"; +// import sanitizeFileName from "../../primitives/sanitizeFileName"; +import axios from "axios"; const FileUpload = (props) => { const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); @@ -11,7 +12,7 @@ const FileUpload = (props) => { const [localValue, setLocalValue] = useState(""); const [Message] = useState(false); - const [percentage] = useState(0); + const [percentage, setpercentage] = useState(0); const REQUIRED_FIELD_SYMBOL = "*"; @@ -68,33 +69,50 @@ const FileUpload = (props) => { }; const handleFileUpload = async (file) => { - Parse.serverURL = parseBaseUrl; - Parse.initialize(parseAppId); - const size = file.size; - const fileName = file.name; - const name = sanitizeFileName(fileName); setfileload(true); - const pdfFile = file; - const parseFile = new Parse.File(name, pdfFile); + const file_url = parseBaseUrl.slice(0, -4); + const url = `${file_url}file_upload`; + const formData = new FormData(); + formData.append("file", file); + const config = { + headers: { + "content-type": "multipart/form-data", + "X-Parse-Application-Id": parseAppId + }, + onUploadProgress: function (progressEvent) { + var percentCompleted = Math.round( + (progressEvent.loaded * 100) / progressEvent.total + ); + setpercentage(percentCompleted); + } + }; try { - const response = await parseFile.save(); + await axios + .post(url, formData, config) + .then((res) => { + if (res.data.status === "Error") { + alert(res.data.message); + } + setFileUpload(res.data.imageUrl); + props.onChange(res.data.imageUrl); + setfileload(false); + setpercentage(0); - setFileUpload(response.url()); - props.onChange(response.url()); - setfileload(false); - // The response object will contain information about the uploaded file - // console.log("File uploaded:", response); - - // You can access the URL of the uploaded file using response.url() - // console.log("File URL:", response.url()); - if (response.url()) { - SaveFileSize(size, response.url()); - - return response.url(); - } + if (res.data.imageUrl) { + SaveFileSize(file.size, res.data.imageUrl); + return res.data.imageUrl; + } + }) + .catch((err) => { + alert(`${err.message}`); + setfileload(false); + setpercentage(0); + }); } catch (error) { - console.error("Error uploading file:", error); + alert(error.message); + setfileload(false); + setpercentage(0); } }; @@ -106,7 +124,7 @@ const FileUpload = (props) => { Download @@ -133,12 +151,14 @@ const FileUpload = (props) => { {REQUIRED_FIELD_SYMBOL} )} {fileload ? ( -
-
- {percentage}% +
+
+
+
+ {percentage}%
) : ( Message && (