image upload, wie ersetze ich die Bildername, wenn Leerzeichen drin ist ?

melistik

Erfahrenes Mitglied
Ich habe ein kleines Image-Upload und Thumb Script erstellt.
Es läuft auch schön und gut, wenn ich nur Bilder hochlade, die ohne Leerzeichen sind.
Sprich bild1.jpg heissen, die Bilder mit bild 1.jpg läd er zwar hoch, kann aber leider kein Thumb erstellen ...
Bitte helft mir, hier ist code :
PHP:
<?
$template = "template.html";
$sizelimit = "no"; //Size Limit?
$sizebytes = "200000"; //Size in Bytes
$absolute_path = "/www/htdocs/v085124/files/imagetest/pics"; //Absolute Pfad
$PicPathIn="http://www.ppone.net/files/imagetest/pics/";
$PicPathOut="/www/htdocs/v085124/files/imagetest/pics/thumb/";
$dir = "dir";
$pictyp = array (".jpg",".JPG",".jpeg",".JPEG");
$thumbBreite= "200";  //Thumbnail Breite, Höhe wird Proportional dazu errechnet
$quali = "100";  //Quali in % aber ohne % hinschreiben =)

if ($db == "")
{
    $open_template = fopen ($template, "r");
    $temp = fread($open_template, filesize($template));
    $temp = ereg_replace("{post}","$PHP_SELF?db=post",$temp);
    $temp = stripslashes($temp);
    fclose($open_template);
    echo $temp;
    }
if ($db == "post") {
$ext = strrchr($file,'.');
if (!in_array($ext,$pictyp)) {
if (file_exists("$absolute_path/$file_name")) {
die("<center>Datei existiert bereits!</center>");
}
if (($sizelimit == "yes") && ($file_size > $sizebytes)) {
die("<center>Datei ist zu groß. Sie darf nicht größer als $sizebytes bytes sein.</center>");
}
@copy($file, "$absolute_path/$file_name") or die("<center>Konnte nicht upgeloaded werden</center>");
} else {
die("<center>Datei ist kein Unterstützer Bildtyp<br> JPG und PNG sind nur zugelassen ...</center>");
}
header("Location: $PHP_SELF?db=ok&file=$file_name");
}
if ($db == "ok") {

// Orginalbild
$bild = $file;

// Bilddaten ermitteln
$size=getimagesize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
if (($size[1] / $thumbBreite) >  1) {
$factor = $size[1] / $thumbBreite;
$thumbHoehe = intval($size[0] / $factor);
}
else {$thumbHoehe=$size[0]; }

if ($size[1] <= $thumbBreite)
{
  $copyfile = $opend."/".$fn;
  $original_file =$dir."/".$fn;
  copy($original_file , $copyfile);
  closedir($result);
}
else {
  $src_img = imagecreatefromjpeg($absolute_path."/".$bild);
  $dst_img = imagecreatetruecolor($thumbBreite,$thumbHoehe);
  imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $thumbBreite, $thumbHoehe, $breite, $hoehe);
  imagejpeg($dst_img, $PicPathOut."/".$bild, $quali);
  imagedestroy($src_img);
  imagedestroy($dst_img);
  }}
?>
 
Wenn du dir leisten kanns, die Bilder umzubenennen, dann kannst du z.B. damit die Leerzeichen durch Unterstriche ersetzten.
Obwohl eh "nur" Windoof User Leerzeichen in Dateinamen verwenden :D

PHP:
if(strpos(' ',$bild)>0)
{
 $bild=str_replace(' ','_',$bild);
}
 
nochmal ne frage ...
also das klappt nun, zwar nicht genau so wie du gesagt hast, ein wenig anders,
doch im Grundegenomm ging es so ;) thx
Zu meiner Frage : Also woran liegt es, dass einige Thumbs eine Size von 0 haben,
und somit unbrauchbar sind... liegt es daran das einige jpg anderes erstellt wurden,
somit nicht verkleinert werden können ?
Wenn ja wie kann man soetwas umgehen ?
 
Zurück