<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vorschaubild</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Condensed&family=Roboto:ital,wght@0,400;0,500;1,400&display=swap" rel="stylesheet">
<link rel="stylesheet" href="/css/styles.css">
<link rel="stylesheet" href="/css/formstyles.css">
<style>
#wrapper {
text-align: center;
background-color: white;
min-height: 236px;
padding: 20px 0 10px 0;
margin-bottom: 25px;
}
.preview_img {
height: 100%;
max-height: 120px;
width: auto;
margin: 25px auto 12px auto;
display: block;
}
</style>
</head>
<body>
<div id="container">
<h1>Vorschaubild</h1>
<h2>Verbesserte Usability mit JavaScript</h2>
<p>Ziel: Der User soll eine Vorschau vom Bild sehen, das er hochladen möchte. Ausserdem wird die Bildgrösse angezeigt.</p>
<p>mdn web docs: <a href="https://developer.mozilla.org/en-US/docs/Web/API/FileReader" target="_blank">FileReader</a><br>
mdn web docs: <a href="https://developer.mozilla.org/en-US/docs/Web/API/File_API/Using_files_from_web_applications" target="_blank">Using files from web applications</a></p>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<div id="wrapper">
<input type="file" accept="image/*" name="myFile" id="myFile">
</div>
<div class="form_control" style="text-align: center;">
<button type="submit" name="go" class="btn btn-blue" disabled>Upload (disabled)</button>
</div>
</form>
</div>
<script>
const inputElement = document.getElementById("myFile");
const wrapper = document.getElementById("wrapper");
inputElement.addEventListener("change", handleFiles, false);
function handleFiles() {
const fileList = this.files;
// Theoretisch ginge auch eine Vorschau von mehreren Bildern,
// wir behandeln nur den Upload von EINEM Bild
const myFile = fileList[0]
if (myFile.type.startsWith("image/")) {
const previewImg = document.createElement("img");
previewImg.classList.add("preview_img");
previewImg.file = myFile;
wrapper.append(previewImg);
const legend = document.createElement("p");
legendText = document.createTextNode("Dateigrösse: " + myFile.size + " Bytes");
legend.appendChild(legendText);
wrapper.append(legend);
const reader = new FileReader();
reader.onload = (e) => {
previewImg.src = e.target.result;
};
reader.readAsDataURL(myFile);
}
else {
alert("Unerlaubter Dateityp, bitte wählen Sie ein Bild aus");
}
}
</script>
</body>
</html>