private async uploadToSiaService( file: FileUpload, folder: string, fileId: string ): Promise<AxiosResponse> { // Step 1: Construct the upload URL const url: string = `${this.siaUrl}/api/worker/objects/${folder}/${fileId}?bucket=${this.siaBucket}` // Step 2: Set up the request configuration let config = { method: 'PUT', maxBodyLength: Infinity, url, headers: { Authorization: `Basic ${Buffer.from(`:${this.siaPassword}`).toString( 'base64' )}`, 'Content-Type': file.mimetype, }, data: file.data, onUploadProgress: (progressEvent: AxiosProgressEvent) => { // Step 3: Track upload progress const { loaded, total } = progressEvent const percentCompleted = Math.round((loaded / Number(total)) * 100) console.log(`Upload progress: ${percentCompleted}%`) }, } try { // Step 4: Send the upload request return await axios.request(config) } catch (e: any) { // Step 5: Return the response console.error(e.message) throw new Error(e.message || 'Error uploading file') } }