-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathmain.js
More file actions
82 lines (64 loc) · 2.41 KB
/
main.js
File metadata and controls
82 lines (64 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Global variables
let picker = document.getElementById('picker');
let listing = document.getElementById('listing');
let box = document.getElementById('box');
let elem = document.getElementById("myBar");
let loader = document.getElementById("loader");
let counter = 1;
let total = 0;
// On button input change (picker), process it
picker.addEventListener('change', e => {
// Reset previous upload progress
elem.style.width = "0px";
listing.innerHTML = "None";
// Get total of files in that folder
total = picker.files.length;
counter = 1;
// Display image animation
loader.style.display = "block";
loader.style.visibility = "visible";
// Process every single file
for (var i = 0; i < picker.files.length; i++) {
var file = picker.files[i];
sendFile(file, file.webkitRelativePath);
}
});
// Function to send a file, call PHP backend
sendFile = function(file, path) {
var item = document.createElement('li');
var formData = new FormData();
var request = new XMLHttpRequest();
request.responseType = 'text';
// HTTP onload handler
request.onload = function() {
if (request.readyState === request.DONE) {
if (request.status === 200) {
console.log(request.responseText);
// Add file name to list
/*
item.textContent = request.responseText;
listing.appendChild(item);
*/
listing.innerHTML = request.responseText + " (" + counter + " of " + total + " ) ";
// Show percentage
box.innerHTML = Math.min(counter / total * 100, 100).toFixed(2) + "%";
// Show progress bar
elem.innerHTML = Math.round(counter / total * 100, 100) + "%";
elem.style.width = Math.round(counter / total * 100) + "%";
// Increment counter
counter = counter + 1;
}
if (counter >= total) {
listing.innerHTML = "Uploading " + total + " file(s) is done!";
loader.style.display = "none";
loader.style.visibility = "hidden";
}
}
};
// Set post variables
formData.set('file', file); // One object file
formData.set('path', path); // String of local file's path
// Do request
request.open("POST", 'process.php');
request.send(formData);
};