diff --git a/packages/file-handling/src/dbp-nextcloud-file-picker.js b/packages/file-handling/src/dbp-nextcloud-file-picker.js
index 92f0110c699397b9e50f9f095e97b919c50ce2a7..1cc95dd76ebc67749efb70419cedfbceb36595b4 100644
--- a/packages/file-handling/src/dbp-nextcloud-file-picker.js
+++ b/packages/file-handling/src/dbp-nextcloud-file-picker.js
@@ -306,6 +306,36 @@ export class NextcloudFilePicker extends ScopedElementsMixin(DBPLitElement) {
         });
     }
 
+    uploadFiles(files) {
+        files.forEach((fileData) => this.uploadFile(fileData));
+    }
+
+    uploadFile(fileData) {
+        this.statusText = "Uploading " + fileData.filename + "...";
+
+        console.log(fileData);
+
+        // https://github.com/perry-mitchell/webdav-client#putfilecontents
+        this.webDavClient
+            .putFileContents(fileData.filename, f)
+            .then(contents => {
+                // create file to send via event
+                const file = new File([contents], fileData.basename, { type: fileData.mime });
+                console.log("binaryFile", file);
+
+                // send event
+                const data = {"file": file, "data": fileData};
+                const event = new CustomEvent("dbp-nextcloud-file-picker-file-uploaded",
+                    { "detail": data, bubbles: true, composed: true });
+                this.dispatchEvent(event);
+
+                this.statusText = "";
+            }).catch(error => {
+                console.error(error.message);
+                this.statusText = error.message;
+        });
+    }
+
     /**
      * Returns the parent directory path
      *