Avatar billede jehomi Nybegynder
23. juni 2003 - 21:14 Der er 47 kommentarer og
1 løsning

havordan lave funktion med gennemse billeder

Hej.
Jeg vil gerne lave en funktion som ses på mange web sites, hvor man kan gennemse de billeder man har liggende på pc'en. det bruges feks på :

www.dba.dk/asp/indrykning/indtastning.asp?annonceid=2580309&annoncetmp=1

Er der en der har et færdigt scripr eller ved hvor man kan finde det, så ville jeg blive glad.
Avatar billede nicklasb Nybegynder
23. juni 2003 - 21:16 #1
<input type="file"> ??
Avatar billede jehomi Nybegynder
23. juni 2003 - 21:16 #2
det var et dårligt link, da det kræver login.
Men i ved det bruges når man skal lægge et billede ind på en side, og så kan denne funtion give mulighed for at man kan gennemse de billeder der ligger på pc'en.
Avatar billede jehomi Nybegynder
23. juni 2003 - 21:17 #3
Jeg er rimelig ny i dette univers, så du må yddybe det lidt nicklasb
Avatar billede nicklasb Nybegynder
23. juni 2003 - 21:19 #4
for at lave en boks til det gør du bare som jeg har vist der.
funktionen til at gemme billedet, kan laves i mange forskellige varianter..
men her er en af dem.. (en meget simpel en .. ;)
http://www.thorsnet.dk/?m=Scripts&side=vis_script&sefil=upload_fil

/Nicklas B.
Avatar billede nicklasb Nybegynder
23. juni 2003 - 21:20 #5
ellers hvis du har mod på det har sukos også lavet et ok system her: http://www.sukos.dk/php/upload/

hvis du har spørgsmål spørger du bare.. Vi kan sikkert finde en løsning..
Avatar billede googolplex Novice
23. juni 2003 - 21:24 #6
Her er en lidt mere udvidet. Det et generelt filupload, der tjekker om filen er den rigtige type, har den rigtige størrelse osv. Bagefter skriver den hvilke filer der er på lager.

Du kan se den her:

http://googolplex.1go.dk/upload.php

----------------------------

<?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 = 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"]));
        $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 jehomi Nybegynder
23. juni 2003 - 21:38 #7
Nu har jeg lidt svært ved at gennemskue hvad jeres koder kan, men den skal, når bruger klikker på gennemse give mulighed for at vælge mellem de billeder der lægger på computeren, og den udvalgte skal så placeres i valg boksen eller formularen.
Avatar billede googolplex Novice
23. juni 2003 - 21:45 #8
Er det sådan noget her du er ude efter ?:

http://googolplex.1go.dk/upload.php

Altså uden den filoversigt ?
Avatar billede jehomi Nybegynder
23. juni 2003 - 21:53 #9
Ja uden den filoversigt, og så skal det bare stå i boksen når man har klikket på filen, og derefter er det meningen det så skal lægges i en database.
Avatar billede jehomi Nybegynder
23. juni 2003 - 21:54 #10
Hvis du har adgang til den blå avis www.dba.dk, så kan du se der hvor man indrykker en annonce kan man også lægge et billede ved. Det er præcis det jeg vil.
Avatar billede googolplex Novice
23. juni 2003 - 22:16 #11
<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

/* Funktioner der benyttes */

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"]));
        $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 "/" . $til;
            } 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);

}
?>
Avatar billede googolplex Novice
23. juni 2003 - 22:17 #12
Du kan se den i funktion her:

http://googolplex.1go.dk/upload2.php

Den returnerer stien til filen, som du efterfølgende kan lægge i en database.
Avatar billede nicklasb Nybegynder
23. juni 2003 - 22:20 #13
googolplex -> Det var da en helvedes til kode for at uploade et billede..
jehomi -> Tror du skal sætte dig lidt mere ind i hvad det er du vil, og SÅ spørge.. Det vil gøre det meget lettere for os alle..

Mener du virkelig at du vil gemme det i en database? Eller er det bare et link til filen du vil gemme der, og så have selve filen på harddisken?? (tror jeg nu nærmere, hvis du ikke ved mere om det)

Prøv at kigge på thorsnets eksempel.. Det er nok det du har lettest ved at gennemskue, og selv forstå bare lidt af til at starte med..
( http://www.thorsnet.dk/?m=Scripts&side=vis_script&sefil=upload_fil )
Der er som googolplex også er inde på, et tjek på både filstørrelse og filtype.. Alt det du behøver her til at starte med..

og tænkt det så en ekstra gang i gennem.. Så kan du komme tilbage, og få hjælp til at udbygge scriptet, hvis der er andet du skal have på.. :D
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:21 #14
hvad for en fil lægger billedet så i efter upload ??
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:22 #15
har skam tænkt det igennem, og det skal ende i en database..
Avatar billede nicklasb Nybegynder
23. juni 2003 - 22:23 #16
og så var det jo egentligt et svar, da jeg kom tids nok med det, og det endda kunne tilstækkeligt til det du skal bruge det til, hvis jeg selv skal bedømme.. ;D
Avatar billede nicklasb Nybegynder
23. juni 2003 - 22:24 #17
jehomi -> Ved du hvad forskellen på at ligge et link til filen i databasen, og selve filen i databasen er?? Der er stor forskel.. Det er langt at fortrække kun at ligge et link deri.. Du har efter min mening ingen fordel ved at ligge hele filen i databasen..

ER det hele filen du vil ligge der??
Avatar billede googolplex Novice
23. juni 2003 - 22:26 #18
En helvedes masse kode ja :) Men så tjekker den også for en masse forskelligt, hvilket kan spare en for en masse problemer senere.

Men ja, den kan jo skæres drastisk ned hvis det er det man vil :)
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:27 #19
ja hele filen
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:28 #20
googolplex, hvad kalder man det bibliotek som filen skal lægge i f.eks. og hvor er det i din kode ??
Avatar billede nicklasb Nybegynder
23. juni 2003 - 22:32 #21
jehomi -> Du ved tilsyneladende mindre end du lige gør og bilder dig selv ind.. ;D

Hvad mener du med ; "hvad kalder man det bibliotek som filen skal lægge i" ??
HVIS du vil gemme hele filen i databasen, skal du da lige netop IKKE have en mappe til dem.. Tænke tænke tænke.. Tror du skal prøve med det link jeg gav dig allerførst.. Du får INTET ud af at bruge googolplexs kode, når du ikke engang selv kan tyde koden og finde ud af hvor filen kommer til at ligge..
PRØV nu engang at gå ind på den side, og se hvad det er.. Er sikker på at det er lettere for dig i sidste ende.. Og alt det googolplexs kode tjekker for har du INTET at bruge til på nuværende tidspunkt..
Avatar billede googolplex Novice
23. juni 2003 - 22:33 #22
Mit upload er lavet som en funktion, så du kun behøver at skrive:

upload_fil($filen, $størrelsen, biblioteket);

I selve funktioen gemmes dit bibliotek (der hvor filen skal hen på serveren) i variablen $bibliotek. Men hvis du ikke angiver noget bibliotek sættes den til "upload".

Men jeg vil nok give nicklasb ret, start med noget simpelt som du forstår godt, så kan du også bedre rette det til osv. :)
Avatar billede googolplex Novice
23. juni 2003 - 22:34 #23
Helt enig med nicklasb !!
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:35 #24
googolplex, kan du ikke lige sige mig hvad jeg skal oprette af biblioteker på min pc for at få det til at køre, og om der ellers er noget der skal rettes til ??
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:38 #25
hallo det var fordi googolplex skrev følgende :


Den returnerer stien til filen, som du efterfølgende kan lægge i en database.

Ved da godt at det er smartere at smide det direkte i databasen.
Avatar billede googolplex Novice
23. juni 2003 - 22:39 #26
Du skal bare have et bibliotek der hedder "upload", men er du sikker på, du er med på hvad der foregår ?

Det er virkelig kun for at hjælpe, når vi siger du bør starte med noget simpelt. Der kan ofte være ballade med upload og så er det meget rart at man forstår koden.

Men nej, ellers burde det virke som i mit eksempel.
Avatar billede googolplex Novice
23. juni 2003 - 22:41 #27
Nej, det er IKKE smartere at smide selve FILEN i databasen, den bør du lægge på serveren i en mappe ! Du skal kun lægge STIEN TIL FILEN i databasen :)
Avatar billede jehomi Nybegynder
23. juni 2003 - 22:47 #28
ved snart ikke om jeg tør spørge, men når jeg har kørt din kode, så skulle billedet ryge i upload biblioteket. Har iøvrigt aldrig påstået at jeg havde styr på det her, vil bare gerne have en god kode der virker!!
Avatar billede googolplex Novice
23. juni 2003 - 22:54 #29
Ja præcis, når du kører min kode ryger billedet i mappen UPLOAD :)

Vi prøver bare at guide dig den rigtige vej :)
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:02 #30
okay jeg har lagt din kode i en fil kaldet sendvidere1.php og den ligger jeg under c:/apache/apache/htdocs/sendvidere1.php og så laver jeg en mappe der hedder upload, og er det så det???
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:22 #31
kan desværre ikke finde billedet når det er uploadet. ved ikke lige hvad jeg har gjort galt, nu er jeg stædig!!
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:25 #32
har oprettet en mappe der hedder upload, men der kommer ikke noget i den efter jeg har trykket upload ????
Avatar billede googolplex Novice
23. juni 2003 - 23:26 #33
Er det din egen server ? Det kan godt være der skal rodes lidt med stien.
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:27 #34
ja har downloadet apache serveren
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:28 #35
din kode ligger i c:/apache/apache/htdocs/sendvidere1.php og
upload mappen ligger i c:/apache/apache/htdocs/upload
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:29 #36
ville blive enormt glad hvis du lige kunne hjælpe med det her :)
Avatar billede googolplex Novice
23. juni 2003 - 23:30 #37
Og du har installeret PHP på serveren ?

(Undskyld for spørgsmålet, men vil bare sikre mig :-))
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:31 #38
ja og det har virket med andre ting :)
Avatar billede googolplex Novice
23. juni 2003 - 23:33 #39
Prøv lige det her i stedet:

<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

/* Funktioner der benyttes */

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

/* Siden starter */

if ($_POST[sendknap]) {

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

}
?>
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:38 #40
nu uploader den som den skal, der er en fil i upload mappen, godt nok som noget volapyk skrift, men det kan man vel ændre??
Avatar billede googolplex Novice
23. juni 2003 - 23:40 #41
Hvad mener du med volapyk skrift, bliver filen du oploadet kaldt noget volapyk ?
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:41 #42
ja det virker fint nu, fedt.
så er det bare at få det sendt til databasen. det skal jo kunne relateres til oplysninger om vedkommende der har lagt det ind
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:43 #43
ved ikke lige hvordan man gør det. altså relaterer det til inputs i en formular der ligger i en database ??
Avatar billede googolplex Novice
23. juni 2003 - 23:44 #44
Ja, men det er en helt anden sag :)

en husk: funktionen returnerer stien til filen, den kan du lægge i databasen sammen med de øvrige informationer.

Nå, jeg vil i seng. Glad for at det virkede ;)
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:50 #45
ja og jeg er virkelig glad for at du hjalp mig igennem. jeg er rimelig ny i php og MySQL, men øvelse gør jo mester :)

Hvor ser man den sti som returneres ???
Avatar billede googolplex Novice
23. juni 2003 - 23:56 #46
Den "fanger" du således:

I stedet for at skrive:

upload_fil($fil); (Helt til sidst i min kode)

Så skriver du:

$stien_til_filen = upload_fil($fil);

Der sker nøjagtig det samme, men nu har du "fanget" det som funktioenen "returnerer" (Der hvor står "return $fil_sti;" i funktionen) i en variablen $stien_til_filen.

Men med hensyn til databasen, så vil jeg foreslå at du læser ALT inde på:

www.webcafe.dk

Og så måske opretter et nyt spørgsmål angående databasen, hvis du ikke kan komme videre. Vi har alle sammen været der, jeg vidst ikke engang hvad PHP var sidste efterår :P

Nå, nu VIL jeg i seng. Sov godt :-)
Avatar billede googolplex Novice
23. juni 2003 - 23:58 #47
Og så kan du selvfølgelig gøre med variablen hvad du har løst til, lægge den i databasen, eller udskrive den (echo $stien_til_filen;).
Avatar billede jehomi Nybegynder
23. juni 2003 - 23:59 #48
ja mange mange tak og sov også godt :-)
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