diff options
| author | Adam Soltys <[email protected]> | 2024-08-30 18:52:00 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-08-30 18:52:00 -0700 |
| commit | 8346eb9e052d10abf4fb65b66838aaab47152e2a (patch) | |
| tree | 0f5efabd144b720598441d9a638fd27d849628ff /src/lib/upload.ts | |
| parent | cb2edf24e48a49417ed6ec4a386e566470ff046c (diff) | |
| download | coinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.tar.gz coinos-ui-8346eb9e052d10abf4fb65b66838aaab47152e2a.zip | |
typescript
Diffstat (limited to 'src/lib/upload.ts')
| -rw-r--r-- | src/lib/upload.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/upload.ts b/src/lib/upload.ts new file mode 100644 index 00000000..31c235c6 --- /dev/null +++ b/src/lib/upload.ts @@ -0,0 +1,18 @@ +export const upload = async (file, type, progress) => { + let url = `/api/upload/${type}`; + let formData = new FormData(); + formData.append("file", file); + + return new Promise((resolve, reject) => { + let ajax = new XMLHttpRequest(); + ajax.addEventListener("load", () => { + if (ajax.readyState === ajax.DONE) { + if (ajax.status === 200) resolve(ajax.response); + else reject(new Error(`Upload failed: ${ajax.response}`)); + } + }); + ajax.upload.addEventListener("progress", progress, false); + ajax.open("POST", url); + ajax.send(formData); + }); +}; |
