<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-Language" content="de"/>
<meta http-equiv="expires" content="0"/>
<script type="text/javascript">
function checksizes(datei){
// Wenns der IE ist, können wir nix machen und müssen das Formular absenden
// So wird durch den IE unnötiger Traffic erzeugt und der User rennt ins offene Messer
if(navigator.appName.indexOf("Internet Explorer") != -1){
return true;
}
// Bist du ein Opera?
var opera = (navigator.userAgent.indexOf('Opera') != -1);
// erst einmal ist alles schön
var result = true;
// Die Maximalgrößen
var mb2 = 2 * 1024 * 1024;
var mb5 = 5 * 1024 * 1024;
var mb8 = 8 * 1024 * 1024; // post_max_size
var maxfilesize = mb2;
var maxpostsize = mb8;
var postsize = 0;
var filesize = 0;
var filename = '';
// Die Statusausgabe
var ausgabe = document.getElementById('ausgabe');
// Zuerst die Ausgabe löschen
ausgabe.innerHTML = '';
// Wir gehen alle files durch. Nur mit HTML5 (außer IE) sind multiple Fileuploads möglich.
// Bei HTML4, XHTML usw. stehen die Daten zu dem einzigen File in files[0]
for(i=0; i < datei.files.length; i++){
filesize = (opera) ? datei.files[i].size : datei.files[i].fileSize;
postsize += filesize;
if(filesize <= maxfilesize){
var uploadstatus = '<span style="color:#00a000">OK</span>';
}else{
var uploadstatus = '<span style="color:#f00000">Zu Groß!</span>';
// delete datei.files[i]; // Das funktioniert leider nicht, weil wir mit Javascript keinen Schreibzugriff auf die files[] im datei Objekt haben
// Deshalb müssen wir schon bei nur einem zu großen File abbrechen!
result = false;
}
filename = (opera) ? datei.files[i].name : datei.files[i].fileName;
// Den Dateistatus in die Ausgabe schreiben
ausgabe.innerHTML += '<p>Datei: ' + filename + ' - Status: ' + uploadstatus + '</p>\n<hr>\n'
}
// noch prüfen, ob die post_max_size nicht überschritten wurde
if(postsize > maxpostsize){
result = false;
ausgabe.innerHTML += '<p style="color:#f00000;">Die Gesamtgröße aller Dateien beträgt: ' + postsize + 'byte<br>Maximale Gesamtgröße ist: ' + maxpostsize + 'byte</p>\n<hr>\n'
}
// true = der onclick Event wird weitergegeben und vom SUbmitbutton ausgeführt
// false = der onclick Event wird abgebrochen und vom Submit Button nicht weiter verarbeitet, das Formular also nicht abgesendet.
return result;
}
</script>
</head>
<body>
<form action="./checkfilesize.html" method="post" enctype="multipart/form-data">
<!-- Das Attribut "multiple" gibt es nur in HTML5 und wird *NICHT* vom IE unterstützt. Trotzdem hier zur Demonstration angewendet -->
<input type="file" id="myfile" name="Datei" onchange="checksizes(document.getElementById('myfile'));" multiple>
<!-- Wir fangen den onclick Event ab und entscheiden dann ob wir ihn an den Submit Button weitergeben oder nicht. -->
<input type="submit" name="Senden" value="Senden" onclick="return checksizes(document.getElementById('myfile'));">
</form>
<div id="ausgabe"></div>
<div class="sourcecode">
<h2>Quelltext dieser Webseite</h2>
<?php
require_once('./Ixiter_Geshi.php');
echo IxiterGeshi_parseCode(file_get_contents(__FILE__));
?>
</div>
<?php include('./piwik.php') ?>
</body>
</html>