Grafikdatei umbenennen

Hallo PHP-Freaks,

ich möchte ein hochgeladenes Bild (jpg) umbenennen hoffte, daß dies so einfach mit der der rename () Funktion geht. Geht es vielleicht auch, aber irgendetwas mit den „“ oder ‚‘ mache ich falsch. Ich wäre für einen Tipp dankbar, hier der Quellcode:

if (isset ($_FILES[‚uploadedfile‘]))
{
$target_path = „/data/webcontent/xxxx/xxx/xxx/“;

$target_path = $target_path . basename( $_FILES[‚uploadedfile‘][‚name‘]);
if(move_uploaded_file($_FILES[‚uploadedfile‘][‚tmp_name‘], $target_path))
{
echo "Datei „. basename( $_FILES[‚uploadedfile‘][‚name‘]). " erfolgreich hochgeladen“;

rename(’". $_FILES[‚uploadedfile‘][‚name‘]."’, „.$objektid.“’.jpeg’);
}
else

Hi … hab zwar null Plan von Php. aber hab mir das grad mal aus langeweile angeguckt. Am ende ist ein befehl mit $objektid … wenn die Programmiersprachen englisch ist müsste das dann nicht $objectid heißen ? Also mit c, oder ist das egal ?

Hi,
du willst die Datei im alten Verzeichnis umbenennen nachdem du sie an einen neuen Ort verschoben hast?

Gruss
joey

Hallo Joey,

ich habe die Datei bereits ins Zielverzeichnis hochgeladen. Meine weiteren Überlegungen waren, den Dateinamen in eine separate Variable, z. B. $dateiname einzulesen und die dann durch rename ($dateiname, $objektid.„jpeg“) umzubenennen.

Also upload klappt, durch das Umbennen in objektid wird die Datei eindeutig einem Artikel mit der gleiche ID in einer Datenbank zugeordnet.

Gruß,
Klaus

Gerade hab ich noch ausprobiert, dateiname und endung zu trennen, funktioniert auch, dann kann ich das auch mit eine neuem dateinamen zusammensetzen.

echo „The file „. basename( $_FILES[‚uploadedfile‘][‚name‘]). " has been uploaded“;
$dateiname = basename( $_FILES[‚uploadedfile‘][‚name‘]);
echo $dateiname;
$parts = explode(’.’, $dateiname);
echo $parts[0];
echo“
";
echo $parts[1];

so sollte es eigentlich gehen.

if (isset ($\_FILES['uploadedfile']))
{
$target\_path = "/data/webcontent/xxxx/xxx/xxx/";

$target\_path = $target\_path . basename( $\_FILES['uploadedfile']['name']);
if(move\_uploaded\_file($\_FILES['uploadedfile']['tmp\_name'], $target\_path .$objektid.'.jpeg'))
{
echo "Datei ". basename( $\_FILES['uploadedfile']['name']). " hochgeladen.";
}

Hallo Phillip,

hat leider nicht geklappt, die grafik hatte nach dem hochladen die Bezeichnung xxxx.jpg.jpg

Ich hatte mir zwischenzeitlich noch eine andere Variante überlegt, erst einmal hochladen, dann Dateinamen auslesen, dann Dateinamen und -endung separieren, dann Dateinamen mit der Objekt-Nr. (objektid) (als Post aus dem vorherigen Skript mittels hidden field übernommen) umbenennen. Dabei vermute ich ein anderes Problem: Die Variable $objektid wird in der if-Klammer nicht übernommen. Vielleicht gibt es dazu eine Lösung?

Hier der Quellcode:

<?php //überprüfen ob Variable $_POST['objektid'] mitgenommen wurde
print\_r ($\_POST['objektid']); echo" "; $objektid=$\_POST['objektid']; echo" "; echo $objektid; echo gettype($objektid); echo" "; if (isset ($\_FILES['uploadedfile'])) { $target\_path = "/data/webcontent/student\_ms/proj\_27\_st09/img/"; $target\_path = $target\_path . basename( $\_FILES['uploadedfile']['name']); if(move\_uploaded\_file($\_FILES['uploadedfile']['tmp\_name'], $target\_path)) { echo "Die Datei ". basename( $\_FILES['uploadedfile']['name']). " wurde hochgeladen"; $dateiname = basename( $\_FILES['uploadedfile']['name']); echo" "; echo $dateiname; $parts = explode('.', $dateiname); echo" "; echo $parts[0]; //parts[0] ist der Dateiname ohne .endung echo" "; global $objektid; echo $objektid; echo gettype($objektid); $parts[0] = $objektid; // Umbenennung des Dateinamens in Objekt ID echo" "; echo $parts[0]; echo" "; echo $parts[1]; //parts[1] ist die Endung echo" "; $dateiname=$parts[0].".".$parts[1]; echo $dateiname; } else { echo "There was an error uploading the file, please try again!"; } } else { ?\> Choose a file to upload: <?php }
?\>

Vielleicht ein wenig umständlich, hier ist meine funktionierende Lösung des Problems:
if (isset ($_FILES[‚uploadedfile‘]))
{
$target_path = „/data/webcontent/xx/xxx/img/“;

$target_path = $target_path . basename( $_FILES[‚uploadedfile‘][‚name‘]);

if(move_uploaded_file($_FILES[‚uploadedfile‘][‚tmp_name‘], $target_path))
{
echo "Die Datei „. basename( $_FILES[‚uploadedfile‘][‚name‘]). " wurde hochgeladen“;

$dateiname = basename( $_FILES[‚uploadedfile‘][‚name‘]);
echo"
„;
echo $dateiname;
$parts = explode(’.’, $dateiname);
echo“
„;
echo $parts[0]; //parts[0] ist der Dateiname ohne .endung
echo“
„;
echo $_POST[‚newfilename‘];
$parts[0] = $_POST[‚newfilename‘]; // Umbenennung Datei in Objekt ID
echo“
„;
echo $parts[0];
echo“
„;
echo $parts[1]; //parts[1] ist die Endung
echo“
„;
$newfilename=$parts[0].“.".$parts[1];
echo $newfilename;
rename ("/data/webcontent/xx/xxx/img/$dateiname", „/data/webcontent/xx/xxx/img/$newfilename“);

}
else
{
echo „There was an error uploading the file, please try again!“;
}
}
else
{
print_r ($_POST[‚objektid‘]);
echo"
„;
$objektid=$_POST[‚objektid‘];
echo“
„;
echo $objektid;
echo gettype($objektid);
echo“
";
?>

Choose a file to upload:

<?php echo '';?\> <?php }
?\>