Entwickler-Ecke
Sonstiges (Web-Entwicklung) - Problem mit FileUpload mit copy()
koller1 - Do 06.09.07 22:13
Titel: Problem mit FileUpload mit copy()
Hallo!
Habe hier ein Problem und komme mit der Lösung nicht weiter.
Unzwar habe ich ein Formular zum Eintragen von Lehrern einer Schule (programmiere mit einem Freund eine Schulhomepage) und da soll man auch Bilder hochladen können.
Unzwar nutze ich dafür <input type='file' ......./>. Soweit so gut. Nun will ich aber neben der Datei, die z.B. mmueller.jpg heißt noch eine weitere hochladen namens mmueller_thumb.jpg. Die zweite Datei hat immer den Namen der ersten +_thumb hinten dran. Dieses Bild ist kleiner von der Dateigröße her. Da die _thumb-Datei immer im gleichen Ordner liegt, wie ihr "großer Bruder", möchte ich die Datei automatisch hochladen, ohne den Nutzer die Datei wieder auswählen zu lassen. Nun habe ich versucht den bei <input type='file'........./> angegeben Pfad in einem Hidden-Button zu speichern, was auch geklappt hat. Aber wenn ich diese Pfad dann bei copy() als erstes Argument einsetze, klappt es net. Und da $_FILES['file']['tmp_name'] auch nichts aussagt, wollte ich mal fragen, wie ich die zweite Datei uploaden kann, ohne eine weitere Benutzereingabe.
Habt ihr da ne Idee?
MFG
koller1
Marco D. - Do 06.09.07 22:19
Ich hab da eine Idee, wie man das mit JS lösen kann. Ich poste weitere Einzelheiten morgen.
DarkHunter - Fr 07.09.07 23:10
Wäre es nicht einfacher, aus dem Ursprungsbild mithilfe der PHP-Image-Funktionen ein Thumbnail zu erstellen?
Damit bräuchte man weniger Traffic von Userseite.
Außerdem kann man so die Dimensionen des Thumbs genau anpassen.
Die Funktion erwartet den Namen des Bildes als String.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function create_thumbnail($image,$size = array(140,100),$prefix = "t_"){ $im = getImage($image); $w = imagesx($im); $h = imagesy($im); $wf = $w / $size[0]; $hf = $h / $size[1]; if ($wf > $hf) { $tw = $size[0]; //Thumbnail width $th = $h / $wf; } else { $tw = $w / $hf; $th = $size[1]; //Thumbnail height } $thumb = imagecreatetruecolor($tw,$th); imagecopyresized($thumb,$im,0,0,0,0,$tw,$th,$w,$h); saveImage($thumb,$prefix.$image); imagedestroy($im); } |
Die beiden aufgerufenen Funktionen SaveImage() und getImage() sehen wie folgt aus.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| function getImage($f){ $ext = fileext($f); if ($ext == "jpeg" || $ext == "jpg") $im = imagecreatefromjpeg($f); else if ($ext == "gif") $im = imagecreatefromgif($f); else if ($ext == "png") $im = imagecreatefrompng($f); return $im; }
function saveImage($imgHnd,$file){ $ext = fileext($file); if ($ext == "jpeg" || $ext == "jpg") imagejpeg($imgHnd,$file); else if ($ext == "gif") imageGIF($imgHnd,$file); else if ($ext == "png") imagePNG($imgHnd,$file); imagedestroy($imgHnd); }
function fileext($file){ if (strpos($file,".")){ $file_array = explode(".",$file); return strtolower($file_array[count($file_array)-1]); } else{ return ""; } } |
Regan - Sa 08.09.07 17:05
DarkHunter hat folgendes geschrieben: |
Wäre es nicht einfacher, aus dem Ursprungsbild mithilfe der PHP-Image-Funktionen ein Thumbnail zu erstellen?
|
Vollkommen richtig. Die Thumbnail-Erstell-Funktion hat auch den Vorteil: Sollte mal ein Thumbnail nicht verfügbar (rein zufällig gelöscht) oder nicht verwendbar (weil noch von einem anderen Programm verwendet) sein, wird diese automatisch erstellt. Somit brauchst du, als Nutzer, nie mehr ein Thumbnail zu erstellen. Du solltest natürlich entsprechende Schreibrechte haben. Somit ist die Wartung auch viel einfacher. Wenn du ein neues Bild hochlädst, wird das Alte automatisch überschrieben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!