Ankündigung

Einklappen
Keine Ankündigung bisher.

"Wirklich löschen" Abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • "Wirklich löschen" Abfrage

    Hi Ihr!

    Ich schreibe ein kleines Upload-Script mit dem man ein Thumbnail auf einen Server hochladen kann. Falls eine Datei mit dem selben Namen schon vorhanden ist, zeige ich nach dem Upload eine Vorschau des noch gespeicherten Bildes und frage dann mit 2 Form-Buttons, ob der User es überschreiben will. Beim Klick auf den Überschreiben-Button wird das Script neu aufgerufen und mit einem if prüfe ich, ob das jetzt eine Überschreiben-Aktion ist. Da aber das Script eben neu aufgerufen wird, weiss ich nicht wie ich dem erneuten Scriptaufruf das neue Bild zum Überschreiben mitgeben soll. Hier mal mein Code, er besteht aus 2 Dateien: Index.html, der Einstieg mit dem Uploader, und upload.php wo die Upload-Logik drin stattfinden soll.

    Index.html
    Code:
    <body>
    <form action="upload.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"><br>
    <input type="submit" value="Hochladen"> 
    </form>
    </body>
    upload.php
    PHP-Code:
    <?php

    if (isset($_POST['overwrite'])){

         
    //hier müsste das alte Bild jetzt überschrieben werden

    } else {
        
    $uploaddir 'pics/';
        
    $type $_FILES['file']['type'];
        if (
    $type=='image/png'){
            
    $filename $_FILES['file']['name'];
            
    $uploaddir $uploaddir.basename$_FILES['file']['name']); 
            if (
    file_exists($uploaddir)) {
                print 
    "<font color='#FF0000'><b>$filename already exists. Really overwrite?</b></font> ";
                print 
    "<p><img src=".$uploaddir." alt=".$uploaddir."></p>";
                echo 
    '<form action="upload.php" method="post"><input type="submit" value="Überschreiben" name="overwrite"></form><form action="index.html" method="link"><input type="submit" value="Abbrechen" name="cancel"></form>';
            } else {
                echo 
    $_FILES['file']['name']."<br>";
                
    move_uploaded_file $_FILES['file']['tmp_name'] , $uploaddir);
                echo 
    "<font color='#00FF00'><b>Upload successfull.</b></font> ";
                echo 
    "<a href='./index.html'>Go back.</a>";
            }
        } else {
            echo 
    "<font color='#FF0000'><b>Please upload a png file.</b></font> ";
            echo 
    "<a href='./index.html'>Go back.</a>";
        }
    }
    ?>
    Zur Erklärung: Das erste If prüft, ob das Script per Overwrite-Button aufgerufen wird. Wenn ja, sollte nun das alte Bild überschrieben werden.
    Falls das Script nicht per Overwrite Button aufgerufen wird, wurde es von index.html mit einer Datei aufgerufen, die ich jetzt im else-Block verarbeite.
    Ich prüfe dabei auf den Dateityp und schaue, ob die Datei schonmal vorhanden ist. Wenn nein, wird die Datei gespeichert, wenn ja, wird der User per Buttons vor die Wahl gestellt abzubrechen oder eben zu überschreiben.


    Vielen Dank für eure Mühen!

    Gruß,
    orkano


  • #2
    Du musst das Bild temporär auf dem Server ablegen und eine Information mit dem nächsten Request übertragen, die diesem Umstand Rechnung trägt (i.e. ein Parameter der besagt, daß das Bild bereits auf dem Server vorhanden ist)
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Danke dir, sowas hab ich schon fast vermutet. Das heisst also, dass es keine Möglichkeit gibt, eine Variable von einem Scriptaufruf zum andern aus dem Script selbst weiterzugeben?

      Kommentar


      • #4
        Über Sessions kannst du Daten über Request-Grenzen hinweg vorhalten, aber die Übergabe von einem Script an ein anderes Script funktioniert nur über den Parameter-Weg, d.h. Script A erzeugt einen Link auf Script B und schreibt die erforderlichen Parameter mit in die URL.

        File-Uploads sind speziell - diese können nicht serverseitig vorbelegt werden (wegen die Sicherheit ).
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar

        Lädt...
        X