Avatar billede silmarillion Juniormester
16. februar 2009 - 20:37 Der er 12 kommentarer

Upload af billeder

Jeg har et script der uploader billeder til en mappe på serveren, og skriver filnavnet ned i en mysql database.

Navnet bliver korrekt skrevet i databasen, og der bliver også uploadet en fil til serveren, med det korrekte filnavn og fil endelse, filen har også den korrekte størrelse, men når man kigger på filen på serveren har den ikke det korrekte ikon, og filtypen er ikke kendt, når filen vises på siden, vises der bare en firkant med et rødt kryds.

kode som følger:

<body>
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="layout">
  <tr>
    <td colspan="2" class="top"><img src="../EasyWebDesigns-dk_Logo_small.jpg" alt="logo" name="logo" width="179" height="70" id="logo" /></td>
  </tr>
  <tr>
    <td class="top1">&nbsp;</td>
    <td class="top1"><h1>&nbsp;</h1></td>
  </tr>
  <tr>
    <td class="left">&nbsp;</td>
    <td class="middle"><p>&nbsp;</p>
      <form action="upload1.php" method="post" enctype="multipart/form-data" name="upload" id="upload">
        Fil der skal overføres:
        <label>
        <input type="file" name="filnavn" id="filnavn" />
        </label>
        <p>
          <label>
          <input type="submit" name="overfør" id="overfør" value="Overfør" />
          </label>
        </p>
      </form>     
    <p>
      <?php
if (isset($_FILES['filnavn'])) {
    echo "fil, der er blevet overført:  {$_FILES['filnavn']['name']}<p>\n";
   
$query = "INSERT INTO billeder SET billednavn='".$_FILES['filnavn']['name']."'";

    $result1 = mysql_query($query, $cms) or die(mysql_error());
}

if (isset($_FILES['filnavn'])){
$tempfile = $_FILES['filnavn']['tmp_name'];
$destination = "../billeder/{$_FILES['filnavn']['name']} ";
copy($tempfile, $destination);
}

?>
    </p></td>
  </tr>
</table>
</body>
</html>

Er der nogle af jer eksperter der ved hvad det skyldes?
Avatar billede erikjacobsen Ekspert
16. februar 2009 - 20:44 #1
Filen ligger måske ikke det sted du skriver. Har du et link?
Avatar billede Slettet bruger
16. februar 2009 - 21:17 #2
Måske mangler du filtypen? Altså du uploader måske "billed.jpg" som kun gemmes som "billed" på serveren?

Har ikke lige set koden igennem, men kan være en mulighed.
Avatar billede dkfire Nybegynder
16. februar 2009 - 21:40 #3
Og så skal du nok ikke bruge copy(), men move_uploaded_file() i stedet.

http://dk.php.net/move_uploaded_file

Med mindre du giver copy() den fulde sti til den midlertidige fil som en upload laver, kan copy() bestemt ikke finde filen den skal kopiere.
Avatar billede silmarillion Juniormester
16. februar 2009 - 21:43 #4
Avatar billede erikjacobsen Ekspert
16. februar 2009 - 21:47 #5
Hvor ligger billederne på serveren når du kigger fx via FTP
Avatar billede silmarillion Juniormester
16. februar 2009 - 21:52 #6
Avatar billede erikjacobsen Ekspert
16. februar 2009 - 22:06 #8
Men den her findes:

http://easywebdesigns.dk/cms/easycms-light/ref/billeder/DSC_0214NY.jpg%20

Jeg synes ikke du skal sætte ekstra mellemrum ind ;)
Avatar billede silmarillion Juniormester
16. februar 2009 - 22:21 #9
Jamen jamen... Fantastisk! Nu virker det jo
Avatar billede erikjacobsen Ekspert
16. februar 2009 - 22:26 #10
Som tidligere skrevet: hellere move_uploaded_file

Og så bør du kontrollere, at det er et billede, så man ikke kan uploade en PHP-fil og overtage kontrollen med dit site.
Avatar billede silmarillion Juniormester
16. februar 2009 - 22:51 #11
Jeg vil prøve med move_uploaded_file, men hvad er forskellen?

Uploadfunktionen kommer til at ligge under et login system, så det ikke er offentligt tilgængeligt, men det er korrekt, der er flere kontrol parametre man kunne sætte ind, det vil jeg nok kigge på, på et lidt senere tidspunkt.
Avatar billede erikjacobsen Ekspert
17. februar 2009 - 08:45 #12
move_uploaded_file kontrollerer om det faktisk er en uploadet fil. Modvirker lidt hacking.

Lige nu - eller i går - ligger dit system frit tilgængeligt, hvor alt kan uploades. Du skal fjerne det eller sikre det.
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