tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
184
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    flandersX flandersX ist offline Mitglied Silber
    Registriert seit
    Jul 2007
    Beiträge
    71
    Hallo,

    ich habe ein Formular über das ich Name und Bild hochlade.
    Was auch super klappt.
    Ich möchte nun, das das Bild den Selben Namen hat, wie der Name im Formfeld "Name" ! (komischer Satz)

    so sieht das Script für den upload des Bildes aus:
    PHP-Code:
    // Grundeinstellungen festlegen
    $pref_device "data/";  // Uploadpfad (absolut) vom Root aus gesehen
    $pref_maxsize 3024*3024// Maximale Dateigroesse in Bytes (KB x 1024)
    $max_x 1024// maximale bildbreite in px
    $max_y 1024// maximale bildhoehe in px
    $pref_maxlength 40// Maximale Laenge des Dateinamens inklusive Dateiendung

    if (isset($_FILES['userpic'])) {
    $filename $_FILES['userpic']['name'];
    $file $_FILES['userpic']['tmp_name'];

    #################################################################

    ### dateigröße anpassen ###
    // bild verkleinern, wenn zu groß
    $tmpfile[1] = $file;
    for(
    $i=1;;$i++){
        
    $file_size filesize($tmpfile[$i]);
        if(
    $file_size $pref_maxsize){
            
    $tmpfile[$i+1] = tempnam($pref_device$filename.'_'.$i);
            
    // bildinfo
            
    $picnfo GetImageSize($tmpfile[$i]);
            
    $new_width $picnfo[0] / 20 19;
            
    $new_height $picnfo[1] / 20 19;
            
    // leeres bild erzeugen
            
    $destimg ImageCreateTrueColor($new_width$new_height) or die("problem in creating empty image");
            
    // temp. bild einlesen
            
    switch ($picnfo[2]) {
                case 
    1:
                    
    $srcimg ImageCreateFromGIF($tmpfile[$i]) or die("Problem In opening Source Image");
                    break;
                case 
    2:
                    
    $srcimg ImageCreateFromJPEG($tmpfile[$i]) or die("Problem In opening Source Image");
                    break;
                case 
    3:
                    
    $srcimg ImageCreateFromPNG($tmpfile[$i]) or die("Problem In opening Source Image");
                    break;
                default:
                    die (
    "extension not supported. only jpg, jpeg, gif and png!");
            }
            
    // verkleinertes temp. bild ins leere bild kopieren
            
    ImageCopyResized($destimg$srcimg0000$new_width$new_height$picnfo[0], $picnfo[1]) or die("Problem In resizing");
            
    // speichern
            
    switch ($picnfo[2]) {
                case 
    1:
                    
    ImageGIF($destimg,$tmpfile[$i+1]) or die("Problem In outputting");
                    break;
                case 
    2:
                    
    ImageJPEG($destimg,$tmpfile[$i+1],100) or die("Problem In outputting");
                    break;
                case 
    3:
                    
    ImagePNG($destimg,$tmpfile[$i+1]) or die("Problem In outputting");
                    break;
            }
            
    // temp datei löschen
            
    unlink ($tmpfile[$i]);
        }
        
        else{
            break;
        }
    }

    $picnfo GetImageSize($tmpfile[$i]);

    ### bildmaße anpassen ###

    // neue ausmaße berechnen, falls zu groß
    if ($picnfo[0] > $max_x){
        
    $newwidth $max_x;
        
    $resize true;
    }
    else{
        
    $newwidth $picnfo[0];
        
    $resize false;
    }
    $newheight round($picnfo[1] / $picnfo[0] * $newwidth);

    if (
    $newheight $max_y) {
        
    $newheight $max_y;
        
    $newwidth round($newheight $picnfo[0] / $picnfo[1]);
        
    $resize true;
    }

    if (
    $resize == true){
    // neue temp datei anlegen
    $tmpfile[$i+1] = tempnam($pref_device$filename.'_'.$i);
    // leeres bild erzeugen
    $destimg ImageCreateTrueColor($newwidth,$newheight) or die("Problem In Creating image");

    // temp. bild einlesen
    switch ($picnfo[2]) {
        case 
    1:
            
    $srcimg ImageCreateFromGIF($tmpfile[$i]) or die("Problem In opening Source Image");
            break;
        case 
    2:
            
    $srcimg ImageCreateFromJPEG($tmpfile[$i]) or die("Problem In opening Source Image");
            break;
        case 
    3:
            
    $srcimg ImageCreateFromPNG($tmpfile[$i]) or die("Problem In opening Source Image");
            break;
        default:
            die (
    "extension not supported. only jpg, jpeg, gif and png!");
    }

    // verkleinertes temp. bild ins leere bild kopieren
    ImageCopyResized($destimg,$srcimg,0,0,0,0,$newwidth,$newheight,$picnfo[0],$picnfo[1]) or die("Problem In resizing");

    // speichern
    switch ($picnfo[2]) {
        case 
    1:
            
    ImageGIF($destimg,$tmpfile[$i+1]) or die("Problem In outputting");
            break;
        case 
    2:
            
    ImageJPEG($destimg,$tmpfile[$i+1],100) or die("Problem In outputting");
            break;
        case 
    3:
            
    ImagePNG($destimg,$tmpfile[$i+1]) or die("Problem In outputting");
            break;
            }
        
    // temp datei löschen
        
    unlink ($tmpfile[$i]);
        
        
    $i++;
    }
    $usertmpfile $tmpfile[$i];

    $verkleinerungen $i 1;

    ################################################################# 
    // Daten entsprechend Grundeinstellungen ueberpruefen

    // Sonderzeichen bearbeiten
    $filename strtr($filename"ÄÖÜäöü""AOUaou"); // Deutsche Umlaute umwandeln
    $filename strtr($filename"ß""s"); // SZet umwandeln
    $filename str_replace(" ","_",$filename); // Leerzeichen durch _ ersetzen

    // Dateiname zu lang?
    if (strlen($filename) > $pref_maxlength) die ("Der Dateiname ist zu lang! Maximal $pref_maxlength Zeichen erlaubt!");

    // Datei existiert bereits? Umbenennen!
    if (file_exists($pref_device.$filename)) {
        
    $ext substr(strrchr($filename,"."),1);
        for (
    $i 1;;) {
            
    $filename str_replace ('.'.$ext''$filename);
            
    $filename .= '_'.$i.'.'.$ext;
            if (!
    file_exists($pref_device.$filename)) break;
            else {
                
    $filename str_replace ('_'.$i.'.'.$ext''$filename);
                
    $filename $filename '.'.$ext;
                
    $i++;
            }
        }
    }

    // Datei in Zielverzeichnis verschieben und CHMOD auf 604 setzen
    copy ($usertmpfile,$pref_device.$filename);
    // temp datei löschen
    unlink ($usertmpfile);
    chmod($pref_device.$filename0604); 
    Die beiden Formfelder so:
    HTML-Code:
    <tr>
            <td bgcolor="#763232"><span class="Bbody2">Name</span></td>
            <td bgcolor="#9e6d6d"><input name="name" type="text" maxlength="16" size="20"></td>
        </tr>
          <tr>
            <td bgcolor="#763232"><span class="Bbody2">Screen</span></td>
            <td bgcolor="#9e6d6d"><input name="userpic" type="file" size="20"></td>
        </tr>
    Ich hoffe es kann jemand helfen ..

    danke
     

  2. #2
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Verstehe dein Anliegen nicht. Du gibst der Datei doch schon einen anderen Namen:
    PHP-Code:
    // Datei in Zielverzeichnis verschieben und CHMOD auf 604 setzen
    copy ($usertmpfile,$pref_device.$filename); 
    http://de3.php.net/manual/de/function.copy.php
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  3. #3
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Statt copy() solltest du übrigens lieber auf move_uploaded_file() zurückgreifen, dafür wurde sie schließlich gemacht
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

Ähnliche Themen

  1. Bildupload
    Von Lektor21 im Forum PHP
    Antworten: 9
    Letzter Beitrag: 21.02.08, 13:09
  2. Bildupload
    Von wowe58 im Forum PHP
    Antworten: 9
    Letzter Beitrag: 18.11.04, 17:50
  3. Bildupload
    Von 2Pac im Forum PHP
    Antworten: 5
    Letzter Beitrag: 09.06.03, 11:19
  4. Bildupload
    Von MSuter im Forum ASP
    Antworten: 1
    Letzter Beitrag: 06.03.03, 12:13
  5. Bildupload
    Von Zipper02 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 10.01.03, 13:30