Problem mit Dateinamen bei Upload

hallo mal wieder :wink:
und zwar kann ich mit unten stehendem script keine dateien hochladen, ohne das der name verfälscht wird wenn dieser weitere punkte vor der dateiendung enthält.

wenn ich also eine datei „x.x.x.mp3“ hochlade, wird daraus ein „x.mp3“ gemacht.

bin damit irgendwo etwas überfordert :smoke:
hoffe ihr könnt mir dabei helfen

<?
if($_GET['action'] == 'addfile')
{
        $title		= $_POST['title'];
        $type		= $_POST['type'];

        $file		= $_FILES["file"];
        $filename	= $_FILES["file"]["name"];
        $filetmp		= $_FILES["file"]["tmp_name"];
        $fileext1       = explode(".",$filename);
        $fileext2       = count($fileext1);
        $fileext        = strtolower($fileext1[$fileext2-1]);
        $filefirst      = $fileext1[0];
        $filetype       = $fileext;
        $filesize       = $_FILES["file"]["size"];
        $filesizeb      = number_format($filesize,2,",",".");
        $filesizekb     = number_format($filesize / 1024,2,",",".");
        $filesizemb     = number_format($filesize / 1024 / 1024,2,",",".");
        $mid            = md5(time());
        $date		= $currentdate;

        $filefirst = str_replace(' ',"_",$filefirst);
        $filename = $filefirst.".".$fileext;
        copy($_FILES["file"]["tmp_name"],"files/".$filename);

       mysql_query("INSERT downloads (
       title,
       type,
       filesize,
       filename,
       filetype,
       date,
       mid
       ) VALUES (
       '".$title."',
       '".$type."',
       '".$filesizemb."',
       '".$filename."',
       '".$filetype."',
       '".$date."',
       '".$mid."'
       )");
       echo "<p align=\"center\">Datei erfolgreich gespeichert!</p><br>";
}
?>

Moin,

diese Zeile

        $fileext1       = explode(".",$filename);

zerlegt dir den Dateinamen anhand der Punkte und macht daraus ein Array. Dadurch, dass du hinterher folgende Zeile stehen hast

$filefirst      = $fileext1[0];

greifst du auf das erste Element des Arrays zurück. Eine Datei names Beispiel.Test.mp3 dürfte dementsprechend eigentlich hinterher Beispiel.mp3 heissen.

Soviel zur Diagnose … mögliche Lösungen wären vielleicht das hier:

for($i=0; count($fileext1)-1; $i++) { $filefirst .= "$fileext1[$i]."; }
// oder auch denkbar eine möglichkeit per implode
$letztesarrayelement = array_pop($fileext1);
$filefirst = implode(".", $fileext1);

MfG
myPages

$letztesarrayelement = array_pop($fileext1); $filefirst = implode(".", $fileext1);
…funktioniert wunderbar, vielen dank!!!