====== File-Uploader mit XMLHttpRequest ======
Mit diesem File-Uploader können Dateien auf den Webserver hochgeladen werden, ohne, dass eine andere Seite aufgerufen oder diese Seite neu aufgebaut werden muss. Der Lade-Vorgang wird durch eine Ajax-Grafik angezeigt. Dieser File-Uploader wurde erfolgreich mit folgenden Browsern getestet:
* Microsoft Internet Explorer 11.0.9600.17959
* Mozilla Firefox 40.0.3
* Google Chrome 38.0.2125.111
* Safari 5.1.7 (7534.57.2)
----
=== 1. Ordner-Struktur anlegen ===
* Verzeichnis "fileuploader": Hier werden die Dateien index.html, fileuploader.js und fileuploader.php erstellt.
* Verzeichnis "img": Hier kommen die Grafiken "success.gif", "fail.gif" und "xajax_loader.gif" rein.
=== 2. Grafiken erstellen ===
Auf der Seite http://www.ajaxload.info/ kann mit wenigen Mausklicks eine Ajax-Loader-Grafik erzeugt werden. Die Generierte Datei in "xajax_loader.gif" umbenennen und in ein "img"-Verzeichnis kopieren, damit die JavaScript-Datei darauf zugreifen kann. Desweiteren werden zwei grafiken "success.gif" und "fail.gif" benötigt.
=== 3. HTML-Seite mit Upload-Formular ===
File-Uploader Version 1.0
function FileUpload( id )
{
var img = document.getElementById( "UploadStatus_" + id );
var form = document.getElementById("fileupload");
img.src = "/img/xajax_loader.gif";
var xmlhttp = new XMLHttpRequest();
var formData = new FormData( form );
xmlhttp.open("POST","fileuploader.php?id=" + id, true );
xmlhttp.send( formData );
xmlhttp.onreadystatechange=function()
{
if( xmlhttp.readyState==4 && xmlhttp.status==200 ) // "Alle Daten wurden empfangen" & "Ok"
{
response = xmlhttp.responseText;
if( response == "1" ) // Ergebnis aus fileuploader.php
{
img.src = "/img/success.gif";
img.alt = "Dokument erfolgreich hochgeladen";
img.title = "Dokument erfolgreich hochgeladen";
}
else
{
alert( "Es ist ein Fehler beim Hochladen der Datei aufgetreten!" );
img.src = "/img/fail.gif";
img.alt = "Dokumenten-Fehler";
img.title = "Dokumenten-Fehler";
}
}
}
}
=== 5. PHP-Datei für Datei-Upload ===
if( isset( $_FILES['Datei_' . $_GET['id']] ) )
{
$file = $_FILES['Datei_' . $_GET['id'] ];
$types = array( "text/xml", "application/xml", "application/octet-stream" );
if( $file['error'] == 0 & $file['size'] < 26214400 ) // kleiner als 25 MB
{
foreach( $types as $type )
{
if( $type == $file['type'] )
{
if( move_uploaded_file ( $file['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/import/" . $file['name'] ) )
echo "1";
else
echo "-1";
}
}
}
}