Avatar billede moreless Nybegynder
30. maj 2003 - 21:58 Der er 9 kommentarer og
1 løsning

Upload billede til bibliotek

Hej

jeg står og skal bruge et færdigt script som kan uploade jpg, gif og png til en specifik mappe på en server.

jeg har ikke tid til at få et script til at virke selv, så jeg kan godt bruge lidt hurtig hjælp.
Avatar billede googolplex Novice
30. maj 2003 - 22:01 #1
function upload_fil($fil, $max_stoerrelse = 100, $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");
    }

    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fil_sti = $bibliotek . "/" . $filnavn;
        $fra = $fil["tmp_name"];
        $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($_SERVER["DOCUMENT_ROOT"] . $fil_sti)) {
               
                $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($_SERVER["DOCUMENT_ROOT"] . $fil_sti)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $fil_sti = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            $til = $_SERVER["DOCUMENT_ROOT"] . $fil_sti;

            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>";
    }
}
Avatar billede googolplex Novice
30. maj 2003 - 22:03 #2
Bruges således:

<?php require($_SERVER["DOCUMENT_ROOT"] . "/includes/funktionsbibliotek.php"); ?>

<html>

<head>
</head>

<body>

<div>

<?php
if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
    $max_stoerrelse = 1000;
    $upload_mappe = "/upload/diverse";
   
    upload_fil($fil, $max_stoerrelse, $upload_mappe);

} 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
}
?>

</div>

</body>

</html>
Avatar billede googolplex Novice
30. maj 2003 - 22:04 #3
Du kan se det i funktion her:

http://www.ladefoged-roenne.dk/testupload.php
Avatar billede moreless Nybegynder
30. maj 2003 - 22:09 #4
Jeg vil gerne have et simpel script som kun indeholder denne funktion
Avatar billede googolplex Novice
30. maj 2003 - 22:14 #5
function upload_fil($fil, $bibliotek = "default") {

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

      $filtyper_tilladt = array("image/bmp", "image/jpeg", "image/pjpeg", "image/tiff", "image/png", "image/gif");   

    if ($fil["size"] > 0) {
       
        $filnavn = strtolower(ereg_replace(" ", "_", $fil["name"]));
        $fil_sti = $bibliotek . "/" . $filnavn;
        $fra = $fil["tmp_name"];
        $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 ($fejl == 0) {
            if (file_exists($_SERVER["DOCUMENT_ROOT"] . $fil_sti)) {
               
                $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($_SERVER["DOCUMENT_ROOT"] . $fil_sti)) {
                    $filnavn = $foerpos . "(" . $i . ")." . $efterpos;
                    $fil_sti = $bibliotek . "/" . $filnavn;
                    $i++;
                }
                echo "'$filnavn'</p>";
            }

            $til = $_SERVER["DOCUMENT_ROOT"] . $fil_sti;

            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>";
    }
}

Nu skal du bare fodre den med en fil (fx "$_FILES["upfil"]") og en mappe (fx "/upload/billeder").
Avatar billede googolplex Novice
30. maj 2003 - 22:15 #6
Det eneste andet den gør er at sørge for at filer på serveren ikke overskrives (omdøber den fil du prøver at uploade til fil(2).jpg osv). Skal jeg også fjerne det ?
Avatar billede moreless Nybegynder
31. maj 2003 - 01:01 #7
ja tak
Avatar billede googolplex Novice
31. maj 2003 - 01:38 #8
Ok, så skulle den være barberet helt ned :)

function upload_fil($fil) {

    if ($fil["size"] > 0) {
       
        $filtyper_tilladt = array("image/jpeg", "image/pjpeg", "image/png", "image/gif");
        $bibliotek = "/upload";
        $fra = $fil["tmp_name"];
        $til = $_SERVER["DOCUMENT_ROOT"] . $bibliotek . "/" . $fil["name"];
        $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 '" . $fil["name"] . "' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }
       
        if ($fejl == 0) {
           
            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '" . $fil["name"] . "' er uploadet!</p>";
            } else {
                echo "<p>Desværre, filen '" . $fil["name"] . "' kunne ikke uploades!</p>";
            }
        }
    } else {
        echo "<p>Der er ikke vedhæftet nogen fil!</p>";
    }
}

Håber du kan få det til at virke, den virker fint hos mig. Ellers må du sige til. Jeg har sat det således op:

<?php require($_SERVER["DOCUMENT_ROOT"] . "/includes/funktionsbibliotek.php"); ?>

<html>

<head>
</head>

<body>

<div>

<?php
if ($_POST[sendknap]) {

    $fil = $_FILES["upfil"];
       
    upload_fil2($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
}
?>

</div>

</body>

</html>
Avatar billede moreless Nybegynder
31. maj 2003 - 03:04 #9
det fungere, jeg takker.
Avatar billede googolplex Novice
31. maj 2003 - 09:39 #10
Takker for point :)
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