File "code.html"
Full Path: /home/analogde/www/Prog/File explorer/upload04/code.html
File size: 5.14 KB
MIME-type: text/html
Charset: utf-8
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<title>Upload Form</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" integrity="sha512-xh6O/CkQoPOWDdYTDqeRdPCVd1SpvCA9XXcUnZS2FmJNp1coAFzvtCN9BmamE+4aHK8yyUHUSCcJHgXloTyT2A==" crossorigin="anonymous" referrerpolicy="no-referrer">
</head>
<style>
* {
box-sizing: border-box;
font-family: -apple-system, BlinkMacSystemFont, "segoe ui", roboto, oxygen, ubuntu, cantarell, "fira sans", "droid sans", "helvetica neue", Arial, sans-serif;
font-size: 16px;
}
body {
margin: 0;
padding: 15px;
background-color: #63a7df;
}
.upload-form {
display: flex;
max-width: 350px;
padding: 20px;
flex-flow: column;
margin: 100px auto 15px auto;
background-color: #fff;
box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.15);
}
.upload-form h1 {
margin: 0;
padding: 15px;
font-size: 18px;
font-weight: 500;
color: #434850;
text-align: center;
}
.upload-form label {
display: flex;
flex-flow: column;
justify-content: center;
align-items: center;
background-color: #fafbfb;
border: 1px solid #e6e8ec;
color: #737476;
padding: 10px 12px;
font-weight: 500;
font-size: 14px;
margin: 10px 0;
border-radius: 4px;
cursor: pointer;
}
.upload-form label i {
margin-right: 10px;
padding: 5px 0;
color: #dbdce0;
}
.upload-form label span {
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
word-break: break-all;
}
.upload-form label:hover {
background-color: #f7f8f9;
border: 1px solid #e3e5ea;
color: #68686a;
}
.upload-form label:hover i {
color: #cfd1d4;
}
.upload-form input[type="file"] {
appearance: none;
visibility: hidden;
height: 0;
width: 0;
padding: 0;
margin: 0;
}
.upload-form .progress {
height: 20px;
border-radius: 4px;
margin: 10px 0;
background-color: #e6e8ec;
}
.upload-form button {
appearance: none;
background-color: #be5a41;
border-radius: 4px;
font-weight: 500;
font-size: 14px;
border: 0;
padding: 10px 12px;
margin-top: 10px;
color: #fff;
cursor: pointer;
}
.upload-form button:hover {
background-color: #b6563e;
}
.upload-form button:disabled {
background-color: #aca7a5;
}
.upload-form .result {
padding-top: 15px;
}
</style>
<script>
// Declare global variables for easy access
const uploadForm = document.querySelector('.upload-form');
const filesInput = uploadForm.querySelector('#files');
filesInput.onchange = () => {
// Append all the file names to the label
uploadForm.querySelector('label').innerHTML = '';
for (let i = 0; i < filesInput.files.length; i++) {
uploadForm.querySelector('label').innerHTML += '<span><i class="fa-solid fa-file"></i>' + filesInput.files[i].name + '</span>';
}
};
// Attach submit event handler to form
uploadForm.onsubmit = event => {
event.preventDefault();
// Make sure files are selected
if (!filesInput.files.length) {
uploadForm.querySelector('.result').innerHTML = 'Please select a file!';
} else {
// Create the form object
let uploadFormDate = new FormData(uploadForm);
// Initiate the AJAX request
let request = new XMLHttpRequest();
// Ensure the request method is POST
request.open('POST', uploadForm.action);
// Attach the progress event handler to the AJAX request
request.upload.addEventListener('progress', event => {
// Add the current progress to the button
uploadForm.querySelector('button').innerHTML = 'Uploading... ' + '(' + ((event.loaded/event.total)*100).toFixed(2) + '%)';
// Update the progress bar
uploadForm.querySelector('.progress').style.background = 'linear-gradient(to right, #25b350, #25b350 ' + Math.round((event.loaded/event.total)*100) + '%, #e6e8ec ' + Math.round((event.loaded/event.total)*100) + '%)';
// Disable the submit button
uploadForm.querySelector('button').disabled = true;
});
// The following code will execute when the request is complete
request.onreadystatechange = () => {
if (request.readyState == 4 && request.status == 200) {
// Output the response message
uploadForm.querySelector('.result').innerHTML = request.responseText;
}
};
// Execute request
request.send(uploadFormDate);
}
};
</script>
<body>
<form class="upload-form" action="upload.php" method="post" enctype="multipart/form-data">
<h1>Upload Form</h1>
<label for="files"><i class="fa-solid fa-folder-open fa-2x"></i>Select files ...</label>
<input id="files" type="file" name="files[]" multiple>
<div class="progress"></div>
<button type="submit">Upload</button>
<div class="result"></div>
</form>
</body>
</html>