J
j-l-n
Guest
Ich bräuchte eure Hilfe: Ich hatte ein Skript geschrieben, das die hochgeladenen Dateien verarbeitet (folgt mit ausführlichen Kommentaren).
Zum Upload habe ich ein stinkeinfaches HTML-Formular ohne irgendwelchen Schnick-Schnack geschrieben.
Nun hatte ich mich allerdings etwas umgesehen und bin auf dieses Upload-Formular gestoßen, dass Drag and Drop unterstützt und sogar den Fortschritt als Kreis anzeigt. (Mini AJAX File Upload Form | Tutorialzine)
Ich habe also das Upload-Formular genommen und als serverseitige Verarbeitung mein altes PHP-Skript verwendet. Jetzt funktioniert auch alles (Umbenennung, Verschiebung an Speicherort, etc.) aber es wird nicht mehr die Meldung ausgegeben (per echo""; siehe unten), die den Downloadlink anzeigt und sagt, dass alles hochgeladen wurde; sondern nur ein grünes Häkchen. Allerdings müssen die User unbedingt den Downloadlink angezeigt bekommen, sonst macht ja der ganze Upload keinen Sinn
.
Auf den Punkt gebracht: Ich möchte das obige Formular verwenden und muss es irgendwie hinkriegen, dass die Ausgabe per echo wieder funktioniert. Idee?
Hier noch mein oben genanntes PHP-Skript zur Verarbeitung:
Zum Upload habe ich ein stinkeinfaches HTML-Formular ohne irgendwelchen Schnick-Schnack geschrieben.
Nun hatte ich mich allerdings etwas umgesehen und bin auf dieses Upload-Formular gestoßen, dass Drag and Drop unterstützt und sogar den Fortschritt als Kreis anzeigt. (Mini AJAX File Upload Form | Tutorialzine)
Ich habe also das Upload-Formular genommen und als serverseitige Verarbeitung mein altes PHP-Skript verwendet. Jetzt funktioniert auch alles (Umbenennung, Verschiebung an Speicherort, etc.) aber es wird nicht mehr die Meldung ausgegeben (per echo""; siehe unten), die den Downloadlink anzeigt und sagt, dass alles hochgeladen wurde; sondern nur ein grünes Häkchen. Allerdings müssen die User unbedingt den Downloadlink angezeigt bekommen, sonst macht ja der ganze Upload keinen Sinn
Auf den Punkt gebracht: Ich möchte das obige Formular verwenden und muss es irgendwie hinkriegen, dass die Ausgabe per echo wieder funktioniert. Idee?
Hier noch mein oben genanntes PHP-Skript zur Verarbeitung:
PHP:
<?php
if(isset($_FILES['datei']['name'])) // nur ausführen, wenn Datei ausgewählt
{
$max_filesize = 52428800; // maximale Dateigröße in Byte (hier: 50MB)
$max_filesize_mb = 50; // in normaler Einheit
if($_FILES['datei']['size'] < $max_filesize) // wenn Datei unter Größen-Limit und vorhanden
{
$id = md5(uniqid()); // zufällige Zeichenfolge für unterschiedliche Dateinamen erzeugen
// Name der hochgeladenen Datei in Kleinbuchstaben als Variable festlegen
$DateiName = str_replace(' ','-',strtolower($_FILES['datei']['name']));
// Dateierweiterung durch Suchen des letzten Punktes im Dateinamen erhalten
$DateiExt = substr($DateiName, strrpos($DateiName, '.'));
$DateiExt = str_replace('.','',$DateiExt);
// Dateierweiterung vorrübergehend löschen
$DateiName = preg_replace("/\\.[^.\\s]{3,4}$/", "", $DateiName);
// Neuen Dateinamen aus Name + zufällige Zeichenfolge + Erweiterung
$NewDateiName = $DateiName.'_'.$id.'.'.$DateiExt;
$ziel='uploaded-files'."\\".$NewDateiName; // Zielverzeichnis festlegen und Umbenennung
$temp_datei = $_FILES['datei']['tmp_name']; // nicht verändern!!!
move_uploaded_file($temp_datei,$ziel); // Hochgeladene Datei aus temporären Speicher in Zielordner verschieben
echo"<h4>'{$_FILES['datei']['name']}' wurde erfolgreich hochgeladen.<br>Downloadlink: <a href='https://eg-net.dnsget.org/upload/uploaded-files/$NewDateiName' title='$NewDateiName' target='_blank'>https://eg-net.dnsget.org/upload/uploaded-files/$NewDateiName</a></h4>";
// ###################################
// diese obige Meldung funktioniert nicht #########
// ###################################
}
else // wenn Datei größer als erlaubt, Fehler anzeigen
{
echo"<br><br><h3> FEHLER: Die Datei ist zu groß. (max. ".$max_filesize_mb." MB)\n";
//include("error.html");
}
}
else // wenn keine Datei mitgesendet, Fehler anzeigen
{
echo"<br><br><h3> FEHLER: Es ist keine Datei ausgewählt.</h3>";
}
exit();
?>