Upload - Problem

Sasser

Erfahrenes Mitglied
Hallo alle zusammen!

Ich nutze folgendes um ein Bild hochzuladen, nur funktioniert das einfach nicht...

PHP:
$pic = "Test";
$path = "homes/";
if ($HTTP_POST_FILES['picture']['tmp_name'] <> 'none')
{
$file = $HTTP_POST_FILES['picture']['name'];
$temp = $HTTP_POST_FILES['picture']['tmp_name'];
$path_parts = pathinfo($file);
$filename = $pic.".".$path_parts["extension"];
$dest = $path.$filename;
copy($temp,$dest);
}
 
Ja danke, nur will ich Bilder hochladen und nicht prüfen, ob sie vorhanden sind...

PHP:
$path = "homes/";
if ($HTTP_POST_FILES['homepicture']['tmp_name'] <> 'none')
{
$temp = $HTTP_POST_FILES['homepicture']['tmp_name'];
$filename = $pic.".jpg";
$dest = $path.$filename;
copy($temp,$dest);
}

Das hier stimmt oder:

HTML:
<form method="post" action="index.php?action=intern" enctype="multipart/form-data">
<input type="file" name="homepicture">
</form>
 
Sorry, lese dir das mal genau durch. Dort steht auch das die Funktion "move_uploaded_file" für die Weiterverarbeitung zuständig ist, diese verschiebt die Datei an den von dir angegebenen Ort.

Wenn dein HTML Formular richtig ist, wird das Bild automatisch beim abschicken in /tmp gespeichert.
 
Was ist aber an:

PHP:
copy($temp,$dest);

falsch? Das hat son st auch funktioniert!

Haut da was vll. nicht mit den Rechten hin?

Also ich weiß nicht, irgendwas haut mit dem Müll nicht hin...

PHP:
$pool = "qwertzupasdfghkyxcvbnm";
$pool .= "23456789";
$pool .= "WERTZUPLKJHGFDSAYXCVBNM";
srand ((double)microtime()*1000000);
for($index = 0; $index < 5; $index++)
{
$pic .= substr($pool,(rand()%(strlen ($pool))), 1);
}
$path = "homes/";
$temp = $HTTP_POST_FILES['pic']['tmp_name'];
$filename = $pic.".jpg";
$dest = $path.$filename;
copy($temp,$dest);

Ist doch total unlogisch...
 
PHP:
function getFileExtension($file_name){
    switch ($file_name){
        case "image/pjpeg":
                $extension = '.jpg';
                break;
        case "image/jpeg":
                $extension = '.jpg';
                break;
        case "image/gif":
                $extension = '.gif';
                break;
        case "image/png":
                $extension = '.png';
                break;
        case "image/x-png":
                $extension = '.png';
                break;
        default:
                $extension = '.unknown';
    }
    return $extension;    
}

function getImgName($length=20){
   $randstr='';
   srand((double)microtime()*1000000);

   $chars = array ( 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0');
   for ($rand = 0; $rand <= $length; $rand++) {
     $random = rand(0, count($chars) -1);
     $randstr .= $chars[$random];
   }
   return $randstr;
}
$html_path = "homes"; // muss Schreibrechte haben chmod 0777
$bild_speicher_pfad = $html_path . '/';
$bildName = getImgName(5) . getFileExtension($_FILES['pic']['type']);
if(move_uploaded_file($_FILES['pic']['tmp_name'],$bild_speicher_pfad . $bildName )) {
    // @ Felix Jacobi ;)
   if(@getimagesize($bild_speicher_pfad . $bildName )){   
       echo 'Bild wurde erfolgreich gespeichert...';
   } else {
       unlink ($bild_speicher_pfad . $bildName);
       echo 'Bild wurde wieder gelöscht weil die Datei korrupt ist!';
   }

}

Edit:

wenn dein input Tag so ist, mußt du "pic" natürlich ändern...
HTML:
<input type="file" name="homepicture">

is_uploaded_file und copy hatte man früher verwendet in älteren PHP Versionen.
 
Zuletzt bearbeitet von einem Moderator:
Zurück