import axios, { AxiosRequestConfig } from "axios"; // services import { APIService } from "@/services/api.service"; export class FileUploadService extends APIService { private cancelSource: any; constructor() { super(""); } async uploadFile( url: string, data: FormData, uploadProgressHandler?: AxiosRequestConfig["onUploadProgress"] ): Promise { this.cancelSource = axios.CancelToken.source(); return this.post(url, data, { headers: { "Content-Type": "multipart/form-data", }, cancelToken: this.cancelSource.token, withCredentials: false, onUploadProgress: uploadProgressHandler, }) .then((response) => response?.data) .catch((error) => { if (axios.isCancel(error)) { console.log(error.message); } else { throw error?.response?.data; } }); } cancelUpload() { this.cancelSource.cancel("Upload canceled"); } }