forked from itflow-org/itflow
-
Notifications
You must be signed in to change notification settings - Fork 0
/
client_file_upload_modal.php
87 lines (76 loc) · 4.25 KB
/
client_file_upload_modal.php
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
83
84
85
86
87
<div class="modal" id="uploadFilesModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content bg-dark">
<div class="modal-header">
<h5 class="modal-title"><i class="fa fa-fw fa-cloud-upload-alt mr-2"></i>Upload Files</h5>
<button type="button" class="close text-white" data-dismiss="modal">
<span>×</span>
</button>
</div>
<form action="post.php" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="client_id" value="<?php echo $client_id; ?>">
<div class="modal-body bg-white">
<div class="form-group mb-4">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-fw fa-folder"></i></span>
</div>
<select class="form-control" name="folder_id">
<option value="0">/</option>
<?php
$sql_folders = mysqli_query($mysqli, "SELECT * FROM folders WHERE folder_location = $folder_location AND folder_client_id = $client_id ORDER BY folder_name ASC");
while ($row = mysqli_fetch_array($sql_folders)) {
$folder_id = intval($row['folder_id']);
$folder_name = nullable_htmlentities($row['folder_name']);
?>
<option <?php if (isset($_GET['folder_id']) && $_GET['folder_id'] == $folder_id) echo "selected"; ?> value="<?php echo $folder_id ?>"><?php echo $folder_name; ?></option>
<?php
}
?>
</select>
</div>
</div>
<div class="form-group">
<input type="file" class="form-control-file" name="file[]" multiple id="fileInput" accept=".jpg, .jpeg, .gif, .png, .webp, .pdf, .txt, .md, .doc, .docx, .odt, .csv, .xls, .xlsx, .ods, .pptx, .odp, .zip, .tar, .gz, .xml, .msg, .json, .wav, .mp3, .ogg, .mov, .mp4, .av1, .ovpn">
</div>
<small class="text-secondary">Up to 20 files can be uploaded at once by holding down CTRL and selecting files</small>
</div>
<div class="modal-footer bg-white">
<button type="submit" name="upload_files" class="btn btn-primary text-bold"><i class="fa fa-upload mr-2"></i>Upload</button>
<button type="button" class="btn btn-light" data-dismiss="modal"><i class="fa fa-times mr-2"></i>Cancel</button>
</div>
</form>
</div>
</div>
</div>
<script>
const maxFiles = 20; // Set the maximum number of allowed files
const maxTotalSize = 500 * 1024 * 1024; // 500MB in bytes
const fileInput = document.getElementById('fileInput');
const uploadForm = document.getElementById('uploadForm');
fileInput.addEventListener('change', function () {
const totalSize = calculateTotalFileSize(fileInput.files);
if (fileInput.files.length > maxFiles || totalSize > maxTotalSize) {
alert(`You can only upload up to ${maxFiles} files at a time and the total file size must not exceed 500MB.`);
resetFileInput();
}
});
uploadForm.addEventListener('submit', function (event) {
const totalSize = calculateTotalFileSize(fileInput.files);
if (fileInput.files.length > maxFiles || totalSize > maxTotalSize) {
event.preventDefault();
alert(`You can only upload up to ${maxFiles} files at a time and the total file size must not exceed 500MB.`);
resetFileInput();
}
});
function calculateTotalFileSize(files) {
let totalSize = 0;
for (const file of files) {
totalSize += file.size;
}
return totalSize;
}
function resetFileInput() {
fileInput.value = ''; // Clear the selected files
}
</script>