Files
OpenSign/microfrontends/SignDocuments/src/utils/useFileUpload.js
T

69 lines
1.9 KiB
JavaScript

import { useState } from "react";
import axios from "axios";
export const useFileUpload = () => {
const [parseBaseUrl] = useState(localStorage.getItem("baseUrl"));
const [parseAppId] = useState(localStorage.getItem("parseAppId"));
const [_fileupload, setFileUpload] = useState("");
const [fileload, setfileload] = useState(false);
const [percentage, setpercentage] = useState(0);
const onChange = (e) => {
try {
let files = e.target.files;
if (typeof files[0] !== "undefined") {
fileUpload(files[0]);
} else {
alert("Please select file.");
return false;
}
} catch (error) {
alert(error.message);
return false;
}
};
const fileUpload = async (file) => {
setfileload(true);
let image_url = parseBaseUrl.replace("/app", "");
const url = `${image_url}image_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 {
await axios
.post(url, formData, config)
.then((res) => {
if (res.data.status === "Error") {
alert(res.data.message);
}
setFileUpload(res.data.imageUrl);
setfileload(false);
setpercentage(0);
})
.catch((err) => {
alert(`${err.message}`);
setfileload(false);
setpercentage(0);
});
} catch (error) {
alert(error.message);
setfileload(false);
setpercentage(0);
}
};
return { onChange, _fileupload, fileload, percentage, setFileUpload };
};