Upload via PHP

Tix

Erfahrenes Mitglied
Habe das TUT hier genommen:
http://www.tutorials.de/tutorials65420.html&highlight=upload

So, mein Problem ist jetzt, wie mache ich das, dass die hochgeladene Datei auf dem Server umbenannt wird.

Das Bild soll in die Variable $nick umbenannt werden. In dieser Variablen steht nur z.B. "Tix" allerdings muss das Bild ja "Tix.gif" oder auch "Tix.jpg" heißen.

Weiß jemand wie ich das hinbekomme.
 
PHP:
$exp = explode('.',$tempname);
$ext = $exp[count($exp)-1];
move_uploaded_file($tempname, $nick.$ext);

Der Dateiname wird anhand der Punkte zerlegt. Der Teilstring nach dem letzten Punkt ist logischerweise die Dateierweiterung :)
 
Zuletzt bearbeitet:
das macht der dann aber nich, weil in $name steht ja bild.gif und in $nick steht ja nur Tix drin, und der braucht ja eine Namensendung. Oder hab ich da jetzt n denkfehler?
 
Sorry, hab deinen Beitrag zuerst nich ordentlich gelesen und dein Problem missverstanden. Habs schon editiert :)
 
Folgender Fehler kommt:

Code:
    Warning:  move_uploaded_file(../images/avatar//home/www/kmm611/phptmp/phppIEfgg): failed to open stream: No such file or directory in /home/www/kmm611/html/florian-bloemker/login/upload.php on line 19
    
    Warning: move_uploaded_file(): Unable to move '/home/www/kmm611/phptmp/phppIEfgg' to '../images/avatar//home/www/kmm611/phptmp/phppIEfgg' in /home/www/kmm611/html/florian-bloemker/login/upload.php on line 19
    Die Datei 1.gif wurde erfolgreich hochgeladen!

Das hier hab ich im PHP

PHP:
<?php
  include ("../sql_config.php");
  $nick = $_SESSION["nick"];
  $tempname = $_FILES['file']['tmp_name'];
  $name = $_FILES['file']['name']; 
  $type = $_FILES['file']['type'];
  $size = $_FILES['file']['size']; 
  
  
  if($type != "image/gif" && $type != "image/pjpeg") {
  	$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
  }
  if($size > "15000") {
 	$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
  } 
  if(empty($err)) {
  	$exp = explode('.',$tempname);
  	$ext = $exp[count($exp)-1];
  	move_uploaded_file($tempname, "../images/avatar/".$nick.$ext); 
  	echo "Die Datei $name wurde erfolgreich hochgeladen!";
  	
   $sql = "UPDATE `tr_user`
  		  SET
  		`user_avatar` = $nick
     WHERE
  	(user_nick like '".$_REQUEST[nick]."')"; 
  	
  }
  else {
  	foreach($err as $error)
  	echo "$error<br>";
  }
  ?>
 
Zuletzt bearbeitet:
PHP:
$exp = explode('.',$name);
$ext = $exp[count($exp)-1];
move_uploaded_file($tempname, $nick.$ext);

So sollte es funktionieren. Ich hab nicht bedacht, dass in $tempname keine Extension enthalten ist.
 
Hallo,

ich hab versucht dies auch bei meiner Site anzuwenden. Nur leider klappt das ganze bei mir nicht. Hab die Uploadfunktion genau so aufgebaut wie in dem tut. Nur halt das bei mir noch ein Eintrag in die Datenbank mit dazu kommt.

Bei mir läd er die datei hoch und bennent sie auch um, aber er vergist dabei den Punkt wieder in den Dateinamen zu machen.

Hier mal der Code:

PHP:
   if(empty($err)) {
   		   
   			$exp = explode('.',$name);
   			$ext = $exp[count($exp)-1]; 
   			
 mysql_query("update benutzerdaten set Avatar = './upload/Avatare/".$_POST['id'].".$ext' WHERE id = '".$_POST['id']."' ");
 
  copy($tempname, "./upload/Avatare/".$_POST['id'].$ext);
 echo "<h1>Die Datei $name wurde erfolgreich hochgeladen!</h1>";
 }

Ja und bei mir soll die Datei als Namen die ID des Users, der sie hoch läd bekommen. z.B. 1.gif, 2.gif oder 3.jpeg
Darum auch das $_POST['id'].

Soweit funktioniert das ja auch alles, nur das er halt den Punkt nicht wieder in den Dateinamen macht. Die Dateien sehen dann so aus: 1gif, 2gif oder 3jpeg.

Weis jemand von euch wo der Fehler ist?
 
TheRealSpeedster hat gesagt.:
Weis jemand von euch wo der Fehler ist?

Probier mal folgendes:

PHP:
if(empty($err)) {
 
			 $exp = explode('.',$tempname);
			 $ext = $exp[count($exp)-1]; 
 
mysql_query("update benutzerdaten set Avatar = './upload/Avatare/".$_POST['id'].".$ext' WHERE id = '".$_POST['id']."' ");
 
$id = $_POST['id'];
copy($tempname, "./upload/Avatare/$id.$ext");
echo "<h1>Die Datei $name wurde erfolgreich hochgeladen!</h1>";
}

mfg
forsterm
 
Zuletzt bearbeitet:
Zurück