Gå til innhold

Anbefalte innlegg

Hei!

 

 

Jeg lurer på om det finnes noen enkel måte å skifte navn på en fil som blir lastet opp med nedenstående script.

 

Scriptet fungerer glimrende slik som det er, men skulle altså ha skiftet navn til noe som blir hentet fra en database, eller kanskje aller helst med f.eks $_GET['id'] eller noe.

 

 

<?php
$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 80000)
&& in_array($extension, $allowedExts))
 {
 if ($_FILES["file"]["error"] > 0)
   {
   echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
   }
 else
   {
   echo "Lastet opp: " . $_FILES["file"]["name"] . "<br>";
   echo "Type: " . $_FILES["file"]["type"] . "<br>";
   echo "Størrelse: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
   echo "Midlertidig fil: " . $_FILES["file"]["tmp_name"] . "<br>";
   if (file_exists("upload/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " finnes allerede. ";
  }
   else
  {
  move_uploaded_file($_FILES["file"]["tmp_name"],
  "upload/" . $_FILES["file"]["name"]);
  echo "Lagret i: " . "upload/" . $_FILES["file"]["name"];
  }
   }
 }
else
 {
 echo "Ugyldig fil";
 }

?>

Lenke til kommentar
Videoannonse
Annonse

Hvis du vil f.eks legge til IDen, men beholde navnet kan du gjøre følgende:

 

else {
 $id = $_GET['id'];
 move_uploaded_file($_FILES["file"]["tmp_name"],
 "upload/" . $id . $_FILES["file"]["name"]);
 echo "Lagret i: " . "upload/" . $_FILES["file"]["name"];
}

 

Skal du bytte ut hele filnavnet kjører du bare rename() etter du har flyttet filen:

 

..
move_uploaded_file($_FILES["file"]["tmp_name"],
 "upload/" . $id . $_FILES["file"]["name"]);
$filename=$id . $_FILES["file"]["name"];
$new_filename=$id.'nyttfilnavn';
rename($filename, $new_filename) or die('Error renaming file.');

Endret av Feh
Lenke til kommentar

Hei Feh!

 

 

 

Takk for at du hjelper!

 

Forsøker å sette inn rename-delen du skrev, men jeg får bare opp feilmeldingen. Noen idé om hva det kan være? Driver og forsker litt selv, men finner ikke helt ut av det.

 

Hei, definerer du variablen

$id

i din nåværende kode?

 

Kan du evt legge ut din nåværende kodesnutt? :)

Lenke til kommentar

Hei PureDarkness!

 

 

Jeg tror da det :confused:

 

Her er koden. Har forsøkt med veldig mye forskjellig, men dette er siste forsøk.

 

<?php

$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 80000)
&& in_array($extension, $allowedExts))
 {
 if ($_FILES["file"]["error"] > 0)
   {
   echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
   }
 else
   {
   echo "Lastet opp: " . $_FILES["file"]["name"] . "<br>";
   echo "Type: " . $_FILES["file"]["type"] . "<br>";
   echo "Størrelse: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
   echo "Midlertidig fil: " . $_FILES["file"]["tmp_name"] . "<br>";
   if (file_exists("upload/" . $_FILES["file"]["name"]))
  {
  echo $_FILES["file"]["name"] . " finnes allerede. ";
  }
else {
 $id = $_GET['id'];
move_uploaded_file($_FILES["file"]["tmp_name"],
 "upload/" . $id . $_FILES["file"]["name"]);
$filename=$id . $_FILES["file"]["name"];
$new_filename=$id. 'filnavn';
rename($filename, $new_filename) or die('Error renaming file.');
  }
   }
 }
else
 {
 echo "Ugyldig fil";
 }


?>

Lenke til kommentar

move_uploaded_file() har muligheten til å rename filen, trenger ikke bruke egen funksjon for det.. Jeg ønsker å markere at i din kode skjekker du TO ganger om filen er gyldig format.

 

Du sier du får opp feilmelding, men gi den da til oss? I hver feilmedling så står feilen klart og tydelig... Følgende kode fungerer, uten feil.

 

<?php
$id = $_GET['id'];
function goodfile($ext, $size){
$allowed_ext = array('gif', 'jpg', 'png', 'jpeg');

if(in_array($ext, $allowed_ext) and $size<80000) return true;
else return false;
}
if (isset($_POST['submit'])) {
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
$size = $_FILES['image']['size'];
$new_filename=$id.'_your_filename_here_.'.$ext;

if(goodfile($ext, $size)==false) die("Ugyldig fil, $ext, $size");
if($_FILES["image"]["error"] > 0) die("Error: " . $_FILES["image"]["error"] . "<br />");
if(file_exists("upload/{$new_filename}")) die($_FILES['file']['name'] . " finnes allerede. ");

echo "Lastet opp: " . $_FILES['image']['name'] . "<br>";
echo "Type: " . $_FILES["image"]['type'] . "<br>";
echo "Størrelse: " . ($_FILES['image']['size'] / 1024) . " kB<br>";
echo "Midlertidig fil: " . $_FILES['image']['tmp_name'] . "<br>";

move_uploaded_file($_FILES['image']['tmp_name'], "upload/$new_filename");

} else {
?>
<form action='?id=10' method='post' enctype='multipart/form-data' name='form1'>
	<input class='textbox' name='image' type='file' id='vid_file' />
	<input type='submit' class='button' name='submit' value='last opp' />
</form>
<?php
}

?>

 

Denne koden fungerer, og jeg har testet som du ser, du må bare endre VELDIG enkle saker for å tilpasse den nå.

Endret av warpie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...