Avatar billede dantheman Nybegynder
02. marts 2004 - 15:26 Der er 16 kommentarer

overskrivning ved upload

jeg har fundet følgende kode til at uploade filer med, den fungerer perfekt, men jeg vil gerne have at den skal overskrive hvis et filnavn allerede eksisterer. er der en der kan rette koden så det passer?
Avatar billede dantheman Nybegynder
02. marts 2004 - 15:26 #1
hmm det kunne være i skulle have koden... ;)

<?php

/* Funktioner der benyttes */

function list_filer($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 3000, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "upload";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/x-zip-compressed", "application/octet-stream", "text/html");
    }

    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil["type"];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
        if ($fejl == 0) {
            if (file_exists($til)) {
               
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
               
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omd¯bes derfor til ";
               
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>DesvÊrre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo "<p>Der er ikke vedhÊftet nogen fil!</p>";
    }
}

/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

} else {
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php
}
echo list_filer("upload");
?>
Avatar billede wampiro-uha Nybegynder
02. marts 2004 - 15:32 #2
Hvad sker der når du prøver at uploade noget som allerede findes?
Hos mig overskriver den automatisk?
Avatar billede detox Nybegynder
02. marts 2004 - 15:32 #3
Du fjerner blot denne del:

            if (file_exists($til)) {
             
                $pos = strrpos($filnavn, ".");
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;
             
                echo "<p>Filen '$filnavn' eksisterer allerede i '" . $bibliotek . "' og filen omd¯bes derfor til ";
             
                while (file_exists($til)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $til = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }
Avatar billede dantheman Nybegynder
02. marts 2004 - 15:39 #4
hmm det har jeg prøvet adskillelige gange, jeg ved ikke om jeg hver gang er kommet til at slette noget forkert, nu der den sådan ud men melder fejl når jeg prøver at gå ind på den (fejl i linje 7 eller sådan noget):

<?php

/* Funktioner der benyttes */

function list_filer($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 3000, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "upload";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/x-zip-compressed", "application/octet-stream", "text/html");
    }

    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil["type"];

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
           
            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>DesvÊrre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
     
    } else {
        echo "<p>Der er ikke vedhÊftet nogen fil!</p>";
    }
}

/* Siden starter */

if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

} else {
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php
}
echo list_filer("upload");
?>
Avatar billede detox Nybegynder
02. marts 2004 - 15:47 #5
Prøv:


<?php

/* Funktioner der benyttes */

function list_filer($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}

function upload_fil($fil, $max_stoerrelse = 3000, $bibliotek = "default", $filtyper_tilladt = "default") {

    if ($bibliotek == "default") {
        $bibliotek = "upload";
    }

    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif", "application/pdf", "application/zip", "application/arj", "application/x-zip-compressed", "application/octet-stream", "text/html");
    }

    if ($fil["size"] > 0) {
     
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fra = $fil["tmp_name"];
        $til = $bibliotek . "/" . $filnavn;
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil["type"];

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }
         
            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return true;
            } else {
                echo "<p>DesvÊrre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
   
    } else {
        echo "<p>Der er ikke vedhÊftet nogen fil!</p>";
    }
}

/* Siden starter */

if (isset($_POST['sendknap'])) {

    $fil = $_FILES["upfil"];
    upload_fil($fil);

} else {
?>

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
<fieldset>
  Upload fil<br />
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</fieldset>
</form>

<?php
}
echo list_filer("upload");
?>
Avatar billede dantheman Nybegynder
02. marts 2004 - 15:49 #6
Fejl i linje 7..... :(
Avatar billede detox Nybegynder
02. marts 2004 - 15:54 #7
Kan du uddybe den fejlmelding?
Avatar billede dantheman Nybegynder
02. marts 2004 - 15:57 #8
jeg får følgende fejlmelding:

Parse error: parse error in/customers/vizone.dk/vizone.dk/httpd.www/upload/upload.phpon line 7
Avatar billede detox Nybegynder
02. marts 2004 - 16:01 #9
Hos mig er linie 7:

if($bib = @opendir($bibliotek)) {

og der er ingen fejl! Er det osse din linie 7?
Avatar billede dantheman Nybegynder
02. marts 2004 - 16:09 #10
jeps...
Avatar billede detox Nybegynder
02. marts 2004 - 16:14 #11
Den burde ikke give parse error. Der er jo slet ikke ændret noget der i nærheden. Har du flyttet filen eller har du en mappe der hedder 'upload' i mappen 'upload'?
Avatar billede dantheman Nybegynder
02. marts 2004 - 16:19 #12
jeg har en mappe i upload der hedder upload, men det virker jo fint hvis jeg ikke sletter de linjer... det er som om den et andet sted refererer til dem
Avatar billede detox Nybegynder
02. marts 2004 - 16:22 #13
Næ, det er der ikke. Og der er ingen parse error i den linie (eller nogen anden for den sags skyld), jeg har testet det og her virker det fint.
Avatar billede dantheman Nybegynder
02. marts 2004 - 16:44 #14
hmm kan du ikke prøve at zip'e det og ligge det ud så jeg kan prøve at hente det?? jeg sidder på mac.. det fucker nogle gange op i det
Avatar billede detox Nybegynder
02. marts 2004 - 21:00 #15
Avatar billede dantheman Nybegynder
02. marts 2004 - 23:39 #16
Det er sku for fedt.. endelig virker det.. tak.. du har virkelig fortjent pointene eftersom du gad "kæmpe" så meget meget for det... kom med et svar så får du point

lorte mac... :)
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