Avatar billede lysholm Praktikant
12. september 2007 - 15:53 Der er 7 kommentarer og
1 løsning

Navn på upload filer

Hejsa

Jeg har lavet en side, hvor min familie kan uploade nogle billeder.

Når et familiemedlem uploader et billede, for det navnet "Brugernavn1", "Brugernavn2" osv....

Problemet opstår, når der så senere kommer en anden og uploader billeder, for de for samme navn, altså "Brugernavn1" osv. og de billeder der lå der i forvejen bliver overskrevet!

Nogen der har en løsning på mit problem, hvert billede har brug for et unik navn. (Eller anden løsning)

http://www.vindogvejr.dk/familieweekend/upload.php
Avatar billede yHec Novice
12. september 2007 - 16:37 #1
Du kan jo lave noget med
if(file_exits(Brugernavn1)) $billedenavn="Brugernavn1_01";
Du kan så lave det som en funktion, som derefter tjekker om Brugernavn1_01 er der hvis ja så nyt navn, ellers upload....

Det var lige en brainstorming løsning.

/y
Avatar billede lysholm Praktikant
12. september 2007 - 16:42 #2
Jeg er ikke særlig god til php (lige startet), så skal jeg indsætte:

if(file_exits(Brugernavn1)) $billedenavn="Brugernavn1_01";

... et sted i koden?
Avatar billede yHec Novice
12. september 2007 - 16:47 #3
Det sætter du ind, umiddelbart inden du navngiver filen/billedet.

Læg noget kode herind, de er meget nemmere.

/y
Avatar billede dkfire Nybegynder
12. september 2007 - 22:54 #4
Jeg vil nok hellere give mine filer et navn baseret på time(), så er du ret sikker på det er unik.
Avatar billede lysholm Praktikant
13. september 2007 - 09:18 #5
Her er koden, som den er nu:

<?php
  // getcwd() -> http://dk.php.net/manual/da/function.getcwd.php
  define("UPLOAD_DIR", getcwd()."/"); // Hvor skal de anbringes? Husk afslut med "/"

  $name    = "upload"; // samme navn som i: <input type="file" name="upload[]"...
  $number  = 1; // filnavnet starter med en. (test1.xxx)
  $username = "Brugernavn"; // filename(number).xxx
 
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $length = count($_FILES[$name]["name"]);
    for($i = 0; $i < $length; $i++) {
      $filetemp = $_FILES[$name]["tmp_name"][$i];
      if (is_uploaded_file($filetemp)) {
        $filename = $_FILES[$name]["name"][$i];
        $filesize = $_FILES[$name]["size"][$i];
        $filetype = strrchr($filename, ".");
        $new_file = UPLOAD_DIR.$username.$number.$filetype;
        while (file_exists($new_file)) {
          $number++;
          $new_file = UPLOAD_DIR.$username.$number.$filetype;
        }
        if (@move_uploaded_file($filetemp, $new_file)) {
          echo "Uploaded: $new_file ($filesize bytes)<br>"; // udskriver uploaded filer.
        }
      }
    }
  }
?><style type="text/css">
<!--
body {
    background-color: #D7EBFF;
}
body,td,th {
    color: #003366;
}
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
}
.style3 {
    font-size: 10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style4 {color: #333333}
per {
    border: thin dotted #79BCFF;
}
.style5 {color: #FFFFFF}
.style6 {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #FFFFFF; }
.style7 {
    font-size: 10px
}
-->
</style>
<form action="#" method="post" enctype="multipart/form-data">
  <table width="795" height="247" border="0">
    <tr>
      <th width="356" height="243" valign="top" bgcolor="#B7DBFF" scope="row"><div align="left">
        <p class="style1 style7">Hejsa</p>
        <p class="style3">Her p&aring; siden kan du dele billeder fra familieweekenden p&aring; Dejbjergg&aring;rden.</p>
        <p class="style3">N&aring;r jeg har modtaget en masse billeder, bliver de lagt p&aring; en hjemmeside og jeg sender et link med adressen /Per </p>
        <p class="style3">(Seneste frist for at uploade billederne er den 16. september 2007)</p>
        <p class="style3">Sp&oslash;rgsm&aring;l? Send en mail til <span class="style4">per@vindogvejr.dk</span></p>
        <p class="style1">Der er intet max. for antal billeder der uploades!</p>
      </div></th>
      <th width="12" scope="row"><div align="left">
        <p class="style3">&nbsp;</p>
        </div></th>
      <th width="413" bgcolor="#004993" scope="row"><p align="left" class="style3 style5">S&aring;dan g&oslash;r du:</p>
        <p align="left" class="style6">1. tryk p&aring; Gennemse ... og find det &oslash;nskede billede</p>
        <p align="left" class="style6">2. marker billedet</p>
        <p align="left" class="style6">3. v&aelig;lg &aring;ben</p>
        <p align="left" class="style6">4. Gentag proceduren med alle de billeder der &oslash;nskes uploadet.</p>
        <p align="left" class="style6">5. tryk p&aring; upload billede(r)</p>
        <p align="left" class="style6">Fra der er trykket p&aring;  upload billede(r), kan det godt tage et stykke tid inden billederne er uploadet, men s&aring; snart der kommer noget tekst over denne boks, er  uploaden fuldf&oslash;rt.</p>
      <div align="left" class="style5"></div></th>
    </tr>
  </table>
  <p>
    <!-- Glem ikke [] i name="upload[]" -->
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]" size="40">
    <br>
    <input type="file" name="upload[]2" size="40" />
    <br>
   
    <input type="submit" name="submit" value="Upload billede(er)">
  </p>
</form>
Avatar billede yHec Novice
14. september 2007 - 17:01 #6
Jeg ville ændre denne linje:
$new_file = UPLOAD_DIR.$username.$number.$filetype;
Til noget i retning af
$new_file = UPLOAD_DIR.$username.rand(0,99).$filetype;

Så indsætter den et tilfældigt nummer i filnavnet, det burde ikke give dubletter, ellers gør som dkfire foreslår, og indsæt datoen:

$number=strtotime("now"); //giver et UNIX timestamp, som ikke dubleres.
$new_file = UPLOAD_DIR.$username.$number.$filetype;

/y
Avatar billede lysholm Praktikant
15. september 2007 - 10:29 #7
y opretter du et svar?
Har ændret koden og der ser ud til at virke!
Tak :o)
Avatar billede yHec Novice
15. september 2007 - 20:36 #8
Hvis du har brugt datoløsningen, synes jeg dkfire skal have nogle af point'ene.

Men tak;-)

/y
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