diff --git a/src/stores/s3objects.ts b/src/stores/s3objects.ts
index 149a3eb0bf89f6ffab861d0606b89812d09342a1..29a7e10fd2497e9356dd1a242eee08f8e94d4afb 100644
--- a/src/stores/s3objects.ts
+++ b/src/stores/s3objects.ts
@@ -1,6 +1,7 @@
 import { defineStore } from "pinia";
 import type { _Object as S3Object, HeadObjectOutput } from "@aws-sdk/client-s3";
 import {
+  AbortMultipartUploadCommand,
   CopyObjectCommand,
   GetObjectCommand,
   HeadObjectCommand,
@@ -237,7 +238,23 @@ export const useS3ObjectStore = defineStore({
       if (onProgress != undefined) {
         parallelUploads3.on("httpUploadProgress", onProgress);
       }
-      await parallelUploads3.done();
+      try {
+        await parallelUploads3.done();
+      } catch (e) {
+        // if there is an error with the multipart upload, send an abort multipart upload command
+        const uploadObject = JSON.parse(JSON.stringify(parallelUploads3));
+        if (uploadObject["isMultiPart"] && uploadObject["uploadId"]) {
+          await this.client.send(
+            new AbortMultipartUploadCommand({
+              // AbortMultipartUploadRequest
+              Bucket: bucketName, // required
+              Key: key, // required
+              UploadId: uploadObject["uploadId"], // required
+            }),
+          );
+        }
+        throw e;
+      }
       const newObj = {
         Key: key,
         Size: file.size ?? 0,