Fixes and modifications

This commit is contained in:
pk
2023-07-27 16:40:07 +02:00
parent b30c9b4e2d
commit 12a8cbeba8
3 changed files with 35 additions and 8 deletions

View File

@ -8,13 +8,13 @@ export const upload = function(superClass) {
* @param {Object} opts Upload options
* @returns Promise
*/
uploadFiles(url, files, opts = {}) {
uploadFiles(url, files, data = {}) {
return new Promise((resolve, reject) => {
const request = new XMLHttpRequest();
const formData = new FormData();
for (const key in opts) {
formData.append(key, opts[key]);
for (const key in data) {
formData.append(key, data[key]);
}
request.open('POST', url, true);
@ -24,14 +24,30 @@ export const upload = function(superClass) {
}
});
request.upload.addEventListener('progress', e => {
request.addEventListener('loadstart', e => {
this.dispatchEvent(new CustomEvent('upload-started', { detail: e, bubbles: true, composed: true }));
});
request.addEventListener('progress', e => {
this.dispatchEvent(new CustomEvent('upload-progress', { detail: { percent: ((e.loaded / e.total) * 100).toFixed(2) }, bubbles: true, composed: true }));
});
request.addEventListener('error', e => {
this.dispatchEvent(new CustomEvent('upload-error', { detail: e, bubbles: true, composed: true }));
});
request.addEventListener('error', e => {
this.dispatchEvent(new CustomEvent('upload-error', { detail: e, bubbles: true, composed: true }));
});
request.addEventListener('load', () => {
this.dispatchEvent(new CustomEvent('upload-finished', { detail: null, bubbles: true, composed: true }));
});
request.addEventListener('abort', () => {
this.dispatchEvent(new CustomEvent('upload-aborted', { detail: null, bubbles: true, composed: true }));
});
for (let i = 0; i < files.length; i++) {
formData.append(files[i].name, files[i]);
}