php-resource.de

PHP Tutorial: Dateien per Userinterface hochladen

Um Dateien per Userinterface hochladen zu können, benötigt man vergleichbar wenige Kenntnisse in der Programmiersprache PHP

|15.02.2004 | Lukas Beck | 11869 | KAT : PHP | | Kommentare 0


2

2

Die nun beschriebene Zeile ist der eigentliche Code, der wirklich nur eine einzige Zeile beträgt. copy(); Die hochgeladene Datei wird mit copy(); lediglich vom temporären Ort in den eigentlich gewünschten Ordner kopiert, in dem
Falle ist der Ordner gleich dem Ordner, in dem sich das upload.php Script befindet. Möchte man einen anderen Ordner bestimmen, so könnte das entsprechend so aussehen: copy($datei,"/ordner/$dateiname"); Sobald das Script abgearbeitet ist, wird die Datei automatisch am temporären Ort gelöscht, hierum brauchen wir uns nicht kümmern.

copy($datei,"$dateiname");

Nun sollte die Datei erfolgreich hochgeladen sein, dies überprüfen wir sicherheitshalber noch mit der bereits kennengelernten Funktion file_exists(); - ist die Datei vorhanden, so geben wir eine erfolgreiche Statusmeldung aus, ist dies nicht der Fall, muss folglich ein Fehler aufgetreten sein. Das Script ist abgeschlossen

<?php
if(file_exists($dateiname))
{
echo 
"<br>Die Datei <b>$datei_name</b> wurde mit <b>$datei_size Byte</b> erfolgreich
hochgeladen"
;
}
elseif(!
file_exists($dateiname))
{
echo 
"Die Datei ist nicht vorhanden";
}

?>

Die Funktion check_datei();

Eine wichtige Funktion im Script stellt die Funktion check_datei(); dar. Diese verhindert, dass Dateien überschrieben werden. Ich habe dieses Problem über eine rekursive Funktion gelöst. Wichtig! Diese Datei muss am Anfang des Scripts aufgeführt werden, am besten direkt nach dem einführenden <?php Tag!

Hier ist es nun entscheidend, dass wir, wie zuvor gezeigt, die Variable $datei_name an $dateiname übergeben haben. Beide definieren wir als globale Variablen. Zunächst legen wir den $backupstring fest, dieser ist wie hier von mir als "copy_of_" definiert, dies kann natürlich auch bei Ihnen anders lauten. Die Funktion wird, wie oben gezeigt, dann eingesetzt, wenn bereits durch file_exists(); festgestellt wurde, dass bereits eine gleichnamige Datei existiert. Somit hängen wir in diesem Falle den Zusatzstring $backupstring durch eine Zeichenverkettung an, die wie zu sehen ist, lautet $backupstring."$dateiname";
Nun taucht jedoch ein weiteres Problem auf: Was tun, wenn auch bereits diese Datei schon einmal vorhanden ist? Hier kommt der rekursive Funktionsteil zum Einsatz. Wir überprüfen auch in der Funktion und nach Anhängen des Zusatzstrings $backupstring, ob auch diese Datei bereits exitiert. Diese Überpfrüfung wird solange durchgeführt (rekursiv), bis dies nicht mehr der Fall ist. Solange durchläuft das Script also die Funktion check_datei(); Die Datei wird also in keinem Fall überschrieben, sondern bekommt einen Anhang des Dateinamens, hier "copy_of_";

<?php
function check_datei()
{
global 
$datei_name$dateiname;
    
$backupstring "copy_of_";
    
$dateiname $backupstring."$dateiname";
    if(
file_exists($dateiname))
    {
        
check_datei();
    }
}
?>

Hier noch einmal das Script in seinem Ganzen:

Dateiname: "upload.php

<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="5000">
<input type="file" name="datei"><br>
<input type="submit" value="hochladen">
</form>

<?php

function check_datei()
{
global 
$datei_name$dateiname;
    
$backupstring "copy_of_";
    
$dateiname $backupstring."$dateiname";

    if(
file_exists($dateiname))
    {
        
check_datei();
    }
}

if(!empty(
$datei))
{
    
$dateiname $datei_name;
    if(
file_exists($datei_name))
    {
        
check_datei();
        echo 
"Die Datei mit dem Dateinamen <b>$datei_name</b> existierte bereits.<br> Ihre Datei wurde in <b>$dateiname</b> umbenannt";
    }
    if(
$datei_size $MAX_FILE_SIZE)
    {
        echo 
"Die Datei ist zu groß, die maximale Dateigr&ouml;sse beträgt $MAX_FILE_SIZE Byte(s)";
    }
    else
    {
        
copy($datei,"$dateiname");
        if(
file_exists($dateiname))
        {
            echo 
"<br>Die Datei <b>$datei_name</b> wurde mit <b>$datei_size Byte</b> erfolgreich hochgeladen";
        }
        elseif(!
file_exists($dateiname))
        {
            echo 
"Die Datei ist nicht vorhanden";
        }
    }
}
?>
Navigation -> Seitenanzahl : (2)

  «  1 2  
Kommentare zum Tutorial
Tutorial kommentieren
 
Über den Autor
Lukas Beck

Lukas Beck

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni