Avatar billede overgreat Forsker
24. august 2004 - 13:22 Der er 11 kommentarer og
1 løsning

Ved upload, hvordan sørger jeg for at billede for eget navn?

Jeg har opdaget at det kan give lidt problemer i en upload situation, hvor flere billeder hedder det samme og derfor overskriver hinanden. Derfor kunne jeg godt tænke mig lidt hjælp til, hvordan jeg får billedet til at anvende $id nummeret efterfulgt af filtypen.

fx. $id.gif , $id.jpg osv

Jeg har siddet og rodet med om det ikke kunne være i følgende at det skulle rettes, men har ikke fundet løsningen:

$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

(der skal ikke fortvivles over at der er en upfil1 også, dette er for at jeg kan udvide med endnu et billede upload når den første virker!)

-----------------------

<?
if($up==ja){
session_start();
$_SESSION['nummer'] = $nummer;

$konfiguration["upload_bibliotek"] = "./arguimage";
$konfiguration["max_stoerrelse"] = "1000";
$konfiguration1["upload_bibliotek"] = "./arguimage";
$konfiguration1["max_stoerrelse"] = "1000";

/* Hvor flytter vi fra og til */
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

$fra1 = $_FILES["upfil1"]["tmp_name"];
$til1 = $konfiguration1["upload_bibliotek"] . "/" . $_FILES["upfil1"]["name"];

/* Check PHP-version */
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}

/* Skab de "moderne" arrays hvis vi arbejder med en aeldre PHP */
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}



/* Accepterer vi filens stoerrelse? */
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}

if($fil_stoerrelse > $konfiguration1["max_stoerrelse"]) {
  die("Desværre - filen er for stor. Jeg accepterer kun " .
      $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
      ceil($fil_stoerrelse, 1) . " kb");
}


/* Saa koerer vi */
if(function_exists("move_uploaded_file")) {
  move_uploaded_file($fra, $til);

if(function_exists("move_uploaded_file")) {
  move_uploaded_file($fra1, $til1);

$billede = $_FILES["upfil"]["name"];
$billede1 = $_FILES["upfil1"]["name"];

  include("config.php");

  $db = mysql_connect($server, $user, $pass);

  mysql_select_db($database, $db);

  $dato = date("j/n - Y");

  mysql_query("INSERT INTO `argu_text` ( `id` , `billede` , `dansk` , `tysk` , `engelsk` , `litauisk`)
  VALUES (
  '', '$billede', '$dansk', '$tysk', '$engelsk', '$litauisk'
  )");


}else{



  echo "argu-del er oprettet!<br>";

  echo "<a href='moebeladmin.php'>Retur</a><br>";

  session_destroy();
}

} else {
  copy($fra, $til);
  copy($fra1, $til1);
}





}else{

?>

<FORM METHOD=POST ACTION='argu.php?up=ja' ENCTYPE="multipart/form-data">
Dansk tekst:<br>
<TEXTAREA NAME="dansk" cols="70" rows="6"></textarea><br>
Tysk Tekst:<br>
<TEXTAREA NAME="tysk" cols="70" rows="6"></textarea><br>
Engelsk Tekst:<br>
<TEXTAREA NAME="engelsk" cols="70" rows="6"></textarea>
<br>
Litauisk Tekst:<br>
<TEXTAREA NAME="litauisk" cols="70" rows="6"></textarea>
<br>


Vælg billede :<br>  <input type="file" name="upfil" />
<br>

<p>

<INPUT TYPE=submit VALUE=upload>
</form>


<?
}
?>
Avatar billede dennismp Nybegynder
24. august 2004 - 13:34 #1
prøv med
$info = pathinfo($_FILES['upfil']['name']);
$ext = $info['extension'];
if(empty($ext) ) $ext = '.bin'; // default extension
$til = $konfiguration["upload_bibliotek"] . '/'.$id.'.'.$ext;

Nu skal du bare sørge for at lave insert i databasen, før du bruger move_uploaded_file - så du har id'et.
Avatar billede Slettet bruger
24. august 2004 - 13:41 #2
Så skal du blot i starten vide hvad id nummeret er. Og gøre følgende:

$til1 = $konfiguration1["upload_bibliotek"] . "/" . $_FILES["upfil1"]["name"];

rettes til:

$ext = strtolower(end(explode(".", $_FILES['upfil1']['name'])));
$name = "".$id."".$ext.";
$til1 = $konfiguration1["upload_bibliotek"] . "/" . $name;
Avatar billede dennismp Nybegynder
24. august 2004 - 13:52 #3
hvorfor ikke bare?
$name = $id.$ext;

Men den gør jo næsten det samme som mit forslag. Udover at jeg også håndterer hvis der ikke er en extension.
Avatar billede overgreat Forsker
24. august 2004 - 19:58 #4
Den giver stadig problemer. Nedenstående har jeg klippet den lille del af koden jeg har rettet i.

Den uploader billedet.... men stadig uden at rette navnet til $id(værdien).jpg!

Håber der er hjælp til problemet?!

På forhånd tak



------------




$id = $id;
$fra = $_FILES["upfil"]["tmp_name"];
$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));
$name = $id.$ext;
$til = $konfiguration["upload_bibliotek"] . "/" . $name;
Avatar billede dennismp Nybegynder
24. august 2004 - 20:16 #5
"$id = $id;"

det er ikke nok :-)
Avatar billede overgreat Forsker
24. august 2004 - 20:17 #6
Hvordan skal det så gøres?
Avatar billede overgreat Forsker
24. august 2004 - 20:24 #7
Et lille ekstra spørgsmål.... når jeg nu retter fra og til... skal følgende ikke også rettes til (og hvordan?). Jeg har prøvet mangt og meget i lang tid... det vil bare ikke lykkedes! :-(

------------------

$billede = $_FILES["upfil"]["name"];
Avatar billede dennismp Nybegynder
24. august 2004 - 20:34 #8
forstil dig at $id er tom.

$id = $id;

id er stadig tom.

Du skal have gemt en række i databasen, så du kan hente id'et ud, som du så bruger til at rename filen.

$billede kan bare rettes til
$billede = basename($til);
Avatar billede overgreat Forsker
24. august 2004 - 20:41 #9
Halli hallo... det hjalp en del... eneste fejl er nu at den ikke laver punktummet mellem id og ext. dvs den skriver 85gif.

Samme med den fil der uploades!

Kan du give det sidste hint der?
----------------------

$fra = $_FILES["upfil"]["tmp_name"];
$ext = strtolower(end(explode(".", $_FILES['upfil']['name'])));
$name = $id.$ext;
$til = $konfiguration["upload_bibliotek"] . "/" . $name;
Avatar billede dennismp Nybegynder
24. august 2004 - 20:50 #10
Du skulle have brugt min kode :-)

$name = "$id.$ext";

Bør fixe det
Avatar billede overgreat Forsker
24. august 2004 - 20:54 #11
jepper...... mange tak for hjælpen. Lærerigt!

Sender du et svar?
Avatar billede dennismp Nybegynder
24. august 2004 - 20:56 #12
joda :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester