45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
function uploadFiles(submitButtonID, fileInputID, progressBarID, targetEndpoint, otherData) {
|
|
const submitButton = document.getElementById(submitButtonID)
|
|
submitButton.disabled = true
|
|
|
|
const files = document.getElementById(fileInputID).files
|
|
|
|
if (!files[0]) {
|
|
alert('Please select at least one file')
|
|
submitButton.disabled = false
|
|
return
|
|
}
|
|
|
|
const formData = new FormData()
|
|
|
|
for(var i = 0; i < files.length; i++) {
|
|
formData.append("files[]", files[i])
|
|
}
|
|
|
|
for(const key in otherData) {
|
|
formData.append(key, otherData[key])
|
|
}
|
|
|
|
var xhr = new XMLHttpRequest()
|
|
xhr.open("POST", targetEndpoint)
|
|
xhr.onload = function() {
|
|
if (xhr.status === 200) {
|
|
window.location.href = "/"
|
|
} else {
|
|
alert("Something went wrong during the upload, please try again later")
|
|
submitButton.disabled = false
|
|
}
|
|
}
|
|
xhr.upload.onprogress = function(event) {
|
|
if(event.lengthComputable) {
|
|
const percentComplete = (event.loaded / event.total) * 100
|
|
document.getElementById(progressBarID).value = percentComplete
|
|
}
|
|
}
|
|
xhr.onerror = function() {
|
|
alert("An error occurred, please try again later")
|
|
submitButton.disabled = false
|
|
}
|
|
|
|
xhr.send(formData)
|
|
} |