tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
1481
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    So das mit dem Bilder hochladen habe ich soweit hinbekommen, nun mal weiter im Takt.

    Ich habe ja nun ein Formular, wo ich den Benutzer die Datei aussuchen lasse. Wenn er die Datei ausgewählt hat, aber noch nicht hochladen geklixt hat, wie kann ich es hinbekommen, das dem Benutzer trotzdem schon eine kleine Vorschau gezeigt wird.
    In der Vorschau sollte das Bild jpeg/gif (beschränke mich vielleicht auch auf jpeg, mal schauen) auf das Format 100pxB x 200pxH zugeschnitten werden, aber die originalen Seitenverhältnisse beibehalten werden. Ist das Bild des Users 35x100 dann soll es automatisch auf 70x200 zugeschnitten werden. Oder halt wenn es größer ist ein wenig geschrumpft werden.

    Hier mein Codeschnipsel dazu
    PHP-Code:
       $zielbreite 100;
       
    $zielhoehe 200;
       
       
    $dimensionen GetImageSize($tempnama);
      
    $breite $dimensionen[0];
      
    $hoehe $dimensionen[1];
       
       if (
    $breite>$hoehe// bei Querformat
       
    {
       
    $faktor $zielbreite/$breite// Faktor für Höhe berechnen
       
    $breite $zielbreite;
       
    $hoehe $hoehe $faktor;
       }
       else 
    //bei Höhe größer Breite also Hochformat
       
    {
       
    $faktor $zielhoehe/$hoehe// Faktor für Höhe berechnen
       
    $hoehe $zielhoehe;
       
    $breite $breite $faktor;
       }
       
    // nun müssen die Werte dem Bild zugewiesen werden 
    Tja nun noch dem Bild die Werte zuweisen, aber wie mache ich das am dümmsten?

    Das Bild soll dann auch mit diesen Werten gespeichert werden!


    Ach was ich noch vergessen habe, wenn die Datei schon existiert, dann soll er sie überschreiben. Also müsste ich so eine Abfrage machen:

    PHP-Code:
      if (file_exists('pfad/'.$y.'.jpeg'))
      
    // dann Datei löschen hier weiß ich nicht wie
      
    if (file_exists('pfad/'.$y.'.gif'))
      
    // dann Datei löschen hier weiß ich nicht wie 
    Also erst alle Dateien Löschen die mit dem Namen existieren, da jeder nur eine Datei hochladen darf und es könnte ja sein, das es erst eine gif hochgeladen hatte und nun eine jpg hochläd, dann wären sonst zwei Dateien im Ordner, eine gif und eine jpeg und das darf net!

    Danke für Euer Mühen!
    Geändert von FP4Lisa (13.06.05 um 11:28 Uhr)
     

  2. #2
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Hi,

    die Vorschau geht mit Javascript. Ist mit PHP nicht ralisierbar - zumindest nicht das ich es wüsste.
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  3. #3
    Avatar von T3ch
    T3ch T3ch ist offline Mitglied Gold
    Registriert seit
    Mar 2005
    Beiträge
    210
    Also bei der Vorschau würd ich auch nur Java Script sagen.
    Mit PHP geht es nur (soweit ich weiß) nach einem Neuladen der Seite.

    Ach was ich noch vergessen habe, wenn die Datei schon existiert, dann soll er sie überschreiben. Also müsste ich so eine Abfrage machen:
    Du kannst ganz einfach folgendes versuchen->

    PHP-Code:
    $jpg='pfad/'.$y.'.jpeg';
    $gif='pfad/'.$y.'.gif';

    if (
    file_exists($jpg)&&file_exists($gif))
    {
    unlink($jpg); //eine der beiden löschen
    }
    else
    {
    fopen($datei,"w");
    fwrite($datei,$text);

    Meintest du das vielleicht so?

    Greetz
     

  4. #4
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    Nee meine das net ganz so *lach* aber jetzt merke ich erstmal selber, wie blöd ich mich ausgedrückt habe!
    Nun ich habe ja folgendes: Ein Besucher kann eine gif oder eine jpg datei hochladen. Es können also folgende von einander unabhängige Fälle eintreten:

    A: User läd eine jpg Datei hoch, es ist noch keine andere Datei von ihm vorhanden.

    B: User läd eine jpg Datei hoch, es ist schon eine jpg Datei von ihm vorhanden, welche überschrieben werden soll.

    C: User läd eine jpg Datei hoch, es ist schon eine gif Datei von ihm vorhanden, welche gelöscht werden soll, bevor die neue jpg hoch darf.


    D: User läd eine gif Datei hoch, es ist noch keine andere Datei von ihm vorhanden.

    E: User läd eine gif Datei hoch, es ist schon eine gif Datei von ihm vorhanden, welche überschrieben werden soll.

    F: User läd eine gif Datei hoch, es ist schon eine jpg Datei von ihm vorhanden, welche gelöscht werden soll, bevor die neue jpg hoch darf.

    Nun brauche ich ein Script, das es mit all den Fällen aufnimmt ... also nimmt man
    PHP-Code:
    unlink($datei); 
    um des zu löschen, na mal schauen ob ich was selber basteln kann, das war der Schnipsel der mir gefehlt hat.

    ----------------------------------------------------------------------------------------------------------------------

    Das mit der Vorschau lasse ich dann ersteinmal, was ich aber noch wissen mag ... hatte ja ein kleines php Skript gepostet, mit welchem ich die Höhe ändern mag. Das Rechnerische ist net das Proplem, aber wie weise ich die neuen Maße einer Bilddatei zu?

    ----------------------------------------------------------------------------------------------------------------------

    Schon mal ganz lieb Danke sag für eure Tips.
    Geändert von FP4Lisa (13.06.05 um 17:18 Uhr)
     

  5. #5
    KristophS KristophS ist offline Mitglied Brilliant
    Registriert seit
    Apr 2004
    Ort
    Duisburg
    Beiträge
    778
    Ich kenne dein Benutzer-Verwaltungs-System nicht. Nehmen wir aber an, dass du in einer Variable, nennen wir sie BenutzerNummer, die Nummer oder eindeutige ID (also wenn der Name eindeutig ist, z.B. diesen) des Benutzers gespeichert hast. Nehmen wir weiter an, dass du in dem Verzeichnis "Bilder_Hochgeladen/" die hochgelanden Bilder speicherst.

    So sollte es eigentlich recht einfach möglich sein, du speicherst also die Bilder ala :
    Bilder_Hochgeladen/bildBenutzerNummer.endung. Konkret also z.B. bild102.jpg für ein JPEG-Bild, welches der User 102 hochgeladen hat.

    Schlussendlich überprüfust du ob bild102.jpg ODER bild102.gif besteht und löscht dieses, danach bewegst du das neu hochgeladene dahin.
     

  6. #6
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Also gilt folgendes zu erstellen:

    Userbereich, in welchem er seine Bilder alle ansehen kann um zu wissen, ob und welche Bilder er bereits hochgeladen hat.

    Zu jedem Bild ein Löschbutton und eine Eingabemaske, über welche er Bilder hochladen kann.

    Zuvor sollte ein User der sich neu anmeldet ein eigenes Verzeichnis erhalten, in welchem ausschl. seine Bilder hochgeladen werden.

    Das wäre die eine Möglichkeit. Die andere ist, alles über eine Datenbank und ein einziges Verzeichnis zu steuern.

    Das erfordert eine DB-Tabelle mit den Usern und eine Tabelle mit den Bildern, welche den Usern zugeordnet sind.

    Das Verzeichnis und die Funktion der Darstellung der Bilder wird somit über die DB bei Login verwaltet und entsprechend ausgegeben.
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  7. #7
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    Habe folgendes probiert ...

    PHP-Code:
     if (isset($_REQUEST['hochladen'])){
     
                                     
    $tempname $_FILES['pic']['tmp_name'];
                                     
    $name $_FILES['pic']['name'];
                                     
    $namex '.'.$name;
                                     
    $dateiname explode(".",$namex);
                                     
    $datei $dateiname[1];
                                     
    $endung $dateiname[2];
                                     
    $neuername $y.'.'.$endung;
                                     
                                     
    $type $_FILES['pic']['type'];
                                     
    $size $_FILES['pic']['size'];
                                     
                                     
    $ordner '../profilpics/';
                                     
    $gif $ordner.$y.'.gif';
                                     
    $jpg $ordner.$y.'.jpg';
                                     
    $pfad $ordner.$neuername;
                                     
                                     if(
    $type != "image/gif" && $type != "image/jpeg") {
                                         
    $err[] = "Nur gif und jpeg Dateien dürfen hochgeladen werden.";
                                     }
                                     if(
    $size "15000") {
                                         
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
                                     }
                                     echo 
    $gif;
                                     if (
    file_exists("$gif"))
                                     {
                                     
    unlink("$gif");
                                     }
                                     
                                     if (
    file_exists("$jpg"))
                                     {
                                     
    unlink("$jpg");
                                     }
                                     
                                     if(empty(
    $err)) {
                                         
    copy("$tempname""$pfad");
                                         
    #header ("Location: profil.php?x=".$x);
                                     
    }
                                     
                                     else {
                                         foreach(
    $err as $error)
                                         echo 
    "$error<br>";
                                     }
                             } 
    ...bekomme aber diesen ...

    Code :
    1
    
    [b]Warning[/b]:  unlink(../profilpics/FP4Lisa.jpg): Permission denied in [b]...\profilpicupload.php[/b] on line [b]101[/b]
    ... hässlichen Fehler. Zugriff verweigert ... warum?

    Die Datei wurde aber trotzdem geändert, was denn das jetzt?
    Geändert von FP4Lisa (13.06.05 um 17:43 Uhr)
     

  8. #8
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Weil du das Verzeichnis nicht geöffnet hast um unlink() auszuführen. Du musst auch für unlink() opendir() voran setzen.
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  9. #9
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    DANKESCHÖN du bist meine Rettung *schmatz* :O) !
     

  10. #10
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Kein Thema
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  11. #11
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    Grrrrr zu früh gefreut ... irgendwie ist heute der Wurm drin!
    So sieht nun der Ausschnitt aus dem Code aus ...
    PHP-Code:
                                     if (file_exists("$jpg"))
                                     {
                                     
    opendir("$ordner");
                                     
    unlink("$jpg");
                                     } 
    ... nur der Fehler bleibt der selbe. Irgendwie hab ich das Gefühl heute an allgemeiner Verblödung zu leiden. Nix geht. ;-(( *heul*
     

  12. #12
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Werde dir das später mal überarbeiten. Da fehlt noch was, damit das ganze auch auf dem Server landet.

    Bis gleich, muss noch was anderes zuvor erledigen.
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  13. #13
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    Danke dir für deine Hilfe, ich habe schon das php Handbuch gewälzt und probiert und gemacht, irgendwie bekomme ich es net hin ;-( !
     

  14. #14
    saila saila ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Siegburg
    Beiträge
    742
    Ungetestet!

    PHP-Code:
    <?php

    if(isset($_REQUEST['hochladen'])){

        
    // Verzeichnisse für Bildupload nach Format.
        
    $pfad_gif '../profilpics/gif/';
        
    $pfad_jpg '../profilpics/jpg/';

        
    // Filedaten auslesen
        
    $temp $_FILES['pic']['tmp_name'];
        
    $name $_FILES['pic']['name'];
        
    $type $_FILES['pic']['type'];
        
    $size $_FILES['pic']['size'];

        
    // Prüfen ob das Bild gif, jpg oder jpeg Format hat.
        
    if($type != 'image/gif' OR $type != 'image/jpeg' OR $type != 'image/jpg') {
            
    $err "Nur gif und jpeg Dateien dürfen hochgeladen werden.";
            
    // Wenn Headeroption genutzt wird - dann folgende Zeile frei geben (// löschen).
    //        $err = 1;
        
    }
        
    // Auf Dateigrösse prüfen
        
    elseif($size '15000') {
            
    $err "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
            
    // Wenn Headeroption genutzt wird - dann folgende Zeile frei geben (// löschen).
    //        $err = 2;
        
    }
        
    // Dateien werden auf Format geprüft und in das entsprechende Verzeichnis kopiert.
        
    else {
            
    // für den explode wird vorausgesetzt, das der Bildname keine weiteren Punkt als Dateiname beinhaltet!        
            
    $bf          explode("."$name);
            
    $bild_format $bf[1];
            
            if(
    $bild_format == 'gif'move_uploaded_file($temp$pfad_gif.$name);
            else 
    move_uploaded_file($temp$pfad_jpg.$name);

        }
        
    // Ausgabe der Fehler oder die Uploadbestätigung.                               
        
    if($err) echo $err;
        else echo 
    "Das Bild ".$name." wurde in das entsprechende Verzeichnis kopiert."
        
        
    // Optional - dann die // vor der nächsten Zeile löschen...
        
    header("Location: dateiname.php?info=$err");
        
    // der header steuert die angegebene Datei an. In der Datei muss dann obiger Text, welcher hinter
        // $err gesetzt wurde vorhanden sein. Also statt in dieser Datei in der anderen. Durch den info-Anhang
        // wird somit der entsprechende Text ausgewählt und ausgegeben.
    }

    ?>
     
    tschöh mit öh
    salia

    Wenn kein Text oben vorhanden ist, hier klicken:
    Für PHP -> FAQ
    Für PHP -> php.net
    für MySQL -> dev.mysql.com

  15. #15
    Avatar von FP4Lisa
    FP4Lisa FP4Lisa ist offline Mitglied Silber
    Registriert seit
    Feb 2005
    Ort
    Halle/Saale (Sa-Anh)
    Beiträge
    88
    Mhmm na da haben wir wohl an einander vorbei gerdet, gifs und jpgs sollen schon in das selbe Verzeichnis kommen. Nur darf jeder user nur entweder 1 gif oder 1 jpg haben. Das Skript von mir war soweit schon richtig nur beim überschreiben, wenn der user also ein neues Bild hochläd und das alte überschreibt kommt der Fehler. Trotzdem danke für deine Mühe.
     

Ähnliche Themen

  1. Bilder Hochladen
    Von serd83 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 24.01.09, 03:10
  2. Bilder hochladen - Bilder komprimieren
    Von Anubia im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.08.08, 17:43
  3. Bilder Hochladen im ASP
    Von karlkani im Forum ASP
    Antworten: 1
    Letzter Beitrag: 07.02.07, 20:26
  4. bilder hochladen
    Von franzi79 im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.04.05, 12:54
  5. Bilder hochladen
    Von MSuter im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.04.02, 18:41