Avatar billede kujuk Nybegynder
05. marts 2009 - 19:06 Der er 2 kommentarer og
1 løsning

Upload bestemte script filer

Er det muligt at rette/tilføje noget i nedenstående script, så jeg kan få lov til at uploade nogle mindre filer (under 500 kb)til et regnskabsprogram ?

Filerne hedder ".bck" og ".id"




<?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 "Filer p&aring; lager:<ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }
}
function upload_fil($fil, $max_stoerrelse = 100000, $bibliotek = "default", $filtyper_tilladt = "default") {
    if ($bibliotek == "default") {
        $bibliotek = "upload";
    }
    if ($filtyper_tilladt == "default") {
        $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/png", "image/gif");
    }
    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)) {
                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);
}
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
  <input type="file" name="upfil" size="30" /><br />
  <input type="submit" name="sendknap" value="Upload" />
</form>
<?php
echo list_filer("upload");
?>
Avatar billede moddi100 Seniormester
05. marts 2009 - 21:41 #1
Du kalder bare din funktion upload_fil() således:

upload_fil($fil, 1000000, 'default', array('id','bck'));

Er dog ikke helt sikker på hvad de bliver kaldt, hvis du ændrer dit script til

if ($_POST[sendknap]) {
    $fil = $_FILES["upfil"];
    echo "Filtype: " . $_FILES["upfil"]["type"];
    upload_fil($fil);
}

Kan du se hvad de to filtyper helt nøjagtigt hedder. Så erstatter du bar 'id' og 'bck' med de rigtige navne
Avatar billede kujuk Nybegynder
06. marts 2009 - 16:30 #2
Tak for dit svar.

Jeg er ikke inde i php, men jeg har forsøgt mig med dit forslag og gjort som du har skrevet, men ved selv den mindste ændring i scriptet kan "siden ikke vises" når den kommer på ud på nettet !

Ved du hvad jeg gør forkert der ?
Avatar billede kujuk Nybegynder
24. august 2009 - 17:22 #3
Lukker
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