Uploadscript Datei umbennen

EddieG

Erfahrenes Mitglied
hi,
ich wollte fragen ob es möglich ist eine datei die man hochgeladen hat umubennen also z.B. von "Datei eins hi.rep" in "....rep"
also das alle dateien die hochgeladen werden so anfangen
"rep1.rep"
udn das immer addiert wird also wnen man wieder eine datei hochläd die umbenannt wird in "rep2.rep" usw.

so schaut mein uplaodscript aus
PHP:
<html>
<body>

<form action="uploadrep.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 6000) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

<?php
    if (file_exists("replays/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["name"],
      "replays/" . $_FILES["file"]["name"]);
      echo "<br /> ". "Your File Path is " . "replays/" . $_FILES["file"]["name"];
      }
      echo"<br/>";
    echo"<a href='javascript:window.close();'>Close This Window</a>";
?>
 
Heutzutage ist so vieles möglich, man glaubt es kaum z.B. gibt es eine sehr bekannte Suchmaschine die es ermöglicht zu finden was alles möglich ist :)

Konkret suchst du die Funktion rename() ja wer hätte es gedacht, damit sollte man dein Problem in eine Lösung wandeln können ;-)

mfg
 
Was hältst Du davon eine Zählervariable einzubauen?

PHP:
rename("alter_name", "neuer_name".$i);

Und $i musst Du halt vorher initialisieren. Entweder den aktuellen Wert in eine DB speichern und dort wieder auslesen oder aber alle Dateien in deinem Ordner einlesen, die Zahl rausfiltern und prüfen bei welcher Zahl der Zähler bereits angekommen ist.
 
also so z.B.
PHP:
<?php
$i= i++1;
    if (file_exists("replays/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"], "replays/rep" . $i. ".rep"); 
      echo "<br /> ". "Your File Path is " . "replays/" . $_FILES["file"]["name"];
      }
	  echo"<br/>";
    echo"<a href='javascript:window.close();'>Close This Window</a>";
?>
weil so gehts net^^
 
Erstmal musst Du $i mit der zu vergebenden Zahl initialisieren:
1. Die Datei mit der höchsten Zahl suchen.
Um die Zahl aus der Datei rauszuholen, kannst du z.B. sowas machen:
PHP:
<?php
 $datei = 'akutelledatei_38.txt';
//den String am Unterstrich trennen
 $schritt1 = explode("_", $datei);
//alles vor dem Unterstrich steht jetzt in $schritt1[0] und alles nach dem Unterstrich in //$schritt[1]
//jetzt noch am Punkt trennen
 $schritt2 = explode(".", $schritt1[1]);
//und dann in $i speichern und $i um 1 erhöhen
 $i = $schritt2[0];
 $i++;?>

2. Dann $i in deinen Code einbauen:
Beachte, dass keine Slashes in Dateinamen möglich sind!
PHP:
move_uploaded_file($_FILES["file"]["tmp_name"], "replays" . $i. ".txt");

Du kannst natürlich auch $i in einer DB speichern und vor dem Umbenennen der Datei $i damit initialisieren.
 
oder einfach time() dazu nehmen? dann hast du einfach den aktuellen Timespam im namen
dan brauchst du einen Zähler noch eine DB
 
also ich habe das eingefügt aber es ist falsch
PHP:
<html>
<body>

<form action="uploadrep.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>
<?php
 $datei = 'akutelledatei_38.txt';
//den String am Unterstrich trennen
 $schritt1 = explode("_", $datei);
//alles vor dem Unterstrich steht jetzt in $schritt1[0] und alles nach dem Unterstrich in //$schritt[1]
//jetzt noch am Punkt trennen
 $schritt2 = explode(".", $schritt1[1]);
//und dann in $i speichern und $i um 1 erhöhen
 $i = $schritt2[0];
 $i++;?> 
<?php
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 6000) . " Kb<br />";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
?>

<?php
$i= i++1;
    if (file_exists("replays/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
 move_uploaded_file($_FILES["file"]["name"], "replays" . $i. ".rep");  
      echo "<br /> ". "Your File Path is " . "replays/" . $_FILES["file"]["name"];
      }
	  echo"<br/>";
    echo"<a href='javascript:window.close();'>Close This Window</a>";
?>
 
Zurück