Avatar billede rohaje Nybegynder
22. september 2004 - 10:32 Der er 32 kommentarer og
1 løsning

kan php se hvilke filer der ligger i en mappe?

kan php se hvilke filer der ligger i en mappe?

kan man, -  browse en mappe på en server med php og få returneret en string eller array til flash med filnavne?
Avatar billede nikolajdu Nybegynder
22. september 2004 - 10:35 #1
VI har tidligere været ude i en længere diskussion og svaret er "hvis du vil have Stifinder, så glem det" - Jeg har måske 300.000 filer på computeren flash er slet ikke beregnet til at håndtere den slags.

Hvis det er fordi du f.eks vil læse en mappe med billeder og gerne kunne skifte mappe så er det rimeligt simpelt.
Avatar billede rohaje Nybegynder
22. september 2004 - 10:40 #2
Det jeg fisker efter er, det gode gamle ”dias”- show, hvor man loader jpg’er. Jeg plejer at lave det med en antPict variable og samme filnavne + nr

Jeg tænkte at det ville være en del smartere hvis jeg kunne læse alle filnavne i en mappe og lave array af dem. Det ville lette opdateringer plus åbne for muligheden at det kunne være en blanding af jpg’er og swf’er i mappen.
Avatar billede nikolajdu Nybegynder
22. september 2004 - 10:42 #3
<?php

$type = $_GET["type"];

// $type angiver her hvilken undermappe der skal ledes i.

$graphicsNum = 0;

if ($dir = @opendir("M:\www\images\\".$type)) {
    $fileid = 0;
    while($file = readdir($dir)) {
        if(!ereg("^[\.]{1,2}", $file)){
            if (eregi("\.jpg$", $file) || eregi(".swf$", $file)) {
                $files[$fileid]["filename"] = $file;
                print "graphics_".$fileid."=".$file."&";
                $fileid++;
            }
        }
    }
print "&graphicsNum=".$fileid;
        closedir($dir);
}

?>
Avatar billede nikolajdu Nybegynder
22. september 2004 - 10:45 #4
Hvis du har alle billeder i samme mappe, så kan du fjerne $type.

Så hedder den bare :

if ($dir = @opendir("M:\www\images\")) {

Brug LoadVars til at hente data med og der returneres graphics_0, graphics_1 o.s.v + en sidste graphicsNum som du kan bruge til at tælle billederne med. (jo barklund jeg ved godt at jeg kan tælle indholdet i loadvars, men nogengange loader man jo ikke kun én type data ;-)) )

Scriptet her loader både .jpg og .swf, da begge jo loades på samme måde i Flash.

/Nikolaj
Avatar billede rohaje Nybegynder
22. september 2004 - 10:50 #5
tak Nikolaj, jeg vil straks lege med det,,

Robert
Avatar billede rohaje Nybegynder
22. september 2004 - 11:19 #6
jeg kan ikke lige få det til at virke helt,, ved ikke om jeg er gal på den i flashen eller php'en

hvis du har tid, ville det være dejligt, hvis du kunne se på det:

det  ligger i en mappe med html'en, swf'en, php3'en og en mappe der hedder grafik

www.rohaje.dk/browse

//flash

mappen = "grafik";
var find_filer = new LoadVars();
find_filer.type = mappen;
find_filer.sendAndLoad("findfiler.php3", find_filer, "POST");
find_filer.onLoad = function(success) {
    if (success) {
        pictArr = new Array();
        for (n=0; n<find_filer.graphicsNum; n++) {
            pictArr[n] = find_filer["graphics_"+n];
        }
        traceField.text ="succes " + find_filer + newline+newline;
        traceField.text+= "pictArr = " + pictArr;
    }else{
        traceField.text="error " + find_filer;
    }
};

// flash slut


findfiler.php3 :

<?php

$type = $_GET["type"];

// $type angiver her hvilken undermappe der skal ledes i.

$graphicsNum = 0;

if ($dir = @opendir("M:\www\rohaje.dk\browse\\".$type)) {
    $fileid = 0;
    while($file = readdir($dir)) {
        if(!ereg("^[\.]{1,2}", $file)){
            if (eregi("\.jpg$", $file) || eregi(".swf$", $file)) {
                $files[$fileid]["filename"] = $file;
                print "graphics_".$fileid."=".$file."&";
                $fileid++;
            }
        }
    }
print "&graphicsNum=".$fileid;
        closedir($dir);
}

?>
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:27 #7
Har du din server og dine billeder liggende på drev M:??

mappen = "grafik";
var find_filer = new LoadVars();
find_filer.typen = mappen;

find_filer.onLoad = function(success) {
    if (success) {
        pictArr = new Array();
        for (n=0; n<find_filer.graphicsNum; n++) {
            pictArr[n] = find_filer["graphics_"+n];
        }
        traceField.text ="succes " + find_filer + newline+newline;
        traceField.text+= "pictArr = " + pictArr;
    }else{
        traceField.text="error " + find_filer;
    }
};
find_filer.sendAndLoad("findfiler.php3?type="+find_filer.typen, find_filer, "POST");
Avatar billede rohaje Nybegynder
22. september 2004 - 11:31 #8
nej, det er en http,
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:32 #9
Har ændret lidt. Du manglede at sende "type" med. Der er ingen grund til at bruge "POST", da vi kun sender $type ud af vagten.

find_filer.load("findfiler.php3?type="+find_filer.typen);
Avatar billede rohaje Nybegynder
22. september 2004 - 11:33 #10
ok tak,, det der med drev M:
skal "M:\" erstattes  af "http:\\"
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:33 #11
Du kan jo startede med bare at åbne din findFiler.php3 (php3 er iøverigt gammel stil - bare kald dine filer .php)

Åben http://www.rohaje.dk/browse/findFiler.php?type=grafik

virker det?
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:34 #12
if ($dir = @opendir("http://rohaje.dk/browse/".$type)) {
Avatar billede rohaje Nybegynder
22. september 2004 - 11:36 #13
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:44 #14
prøv eventuelt if ($dir = @opendir("\browse\\".$type)) {

Det ser ud som om den ikke kan finde dit "grafik" dir
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:47 #15
åh du har jo findFiler.php liggende inde i "browse" mappen.
Avatar billede nikolajdu Nybegynder
22. september 2004 - 11:47 #16
damn nu tabte jeg asken ned i min kaffe....
Avatar billede rohaje Nybegynder
22. september 2004 - 11:50 #17
Det virker heller ikke
Avatar billede rohaje Nybegynder
22. september 2004 - 11:52 #18
Jeg tror også lige jeg skal ha' en kop
Avatar billede rohaje Nybegynder
22. september 2004 - 11:57 #19
if ($dir = @opendir($type)) { ?
Avatar billede rohaje Nybegynder
22. september 2004 - 11:57 #20
jubii
Avatar billede rohaje Nybegynder
22. september 2004 - 11:58 #21
_ bliver til % men nu er den der næsten
Avatar billede rohaje Nybegynder
22. september 2004 - 11:59 #22
næ-  det virker,, skide godt
Avatar billede rohaje Nybegynder
22. september 2004 - 12:02 #23
Det er sku noget jeg kan bruge,, kommer tilbage senere med et opload spørgsmål
mange tak, for hjælpen og smid et svar
Avatar billede nikolajdu Nybegynder
22. september 2004 - 12:04 #24
oki doki. Upload inde fra Flash. Det kan man ikke, men man kan i IE lave et lille hack der "får det tiil at se ud som om" - Så overvej seriøst om ikke du bare skal bruge en almindelig form
Avatar billede rohaje Nybegynder
22. september 2004 - 12:10 #25
ok,, det behøver heller ikke være flash til opload [ :( ] ,,  jeg opretter et nyt spørgsmål når jeg skal igang med det, så der kan komme flere points på bordet.
tak, for hjælpen Nikolaj

mvh

Robert
Avatar billede jacobs1 Nybegynder
29. september 2004 - 13:12 #26
jeg har kigger lidt på dette script,

Er vi eninge om at det der skal ligge i frame 1. i flashen er:
mappen = "grafik";
var find_filer = new LoadVars();find_filer.type = mappen;find_filer.sendAndLoad("findfiler.php", find_filer, "POST");
find_filer.onLoad = function(success) {
if (success) { pictArr = new Array();
for (n=0; n<find_filer.graphicsNum; n++) {
    pictArr[n] = find_filer["graphics_"+n];
    }
    traceField.text ="succes " + find_filer + newline+newline;
    traceField.text+= "pictArr = " + pictArr; 
    }else{ 
    traceField.text="error " + find_filer;   
    }};


Og koden i php scriptet ser sådan her ud : (findfiler.php)
<?php$type = $_GET["type"];
// $type angiver her hvilken undermappe der skal ledes i.$
graphicsNum = 0;if ($dir = @opendir("http://www.mitnavn.dk/mappe".$type))
{    $fileid = 0;    while($file = readdir($dir)) {        if(!ereg("^[\.]{1,2}", $file)){            if (eregi("\.jpg$", $file) || eregi(".swf$", $file)) {                $files[$fileid]["filename"] = $file;                print "graphics_".$fileid."=".$file."&";                $fileid++;            }        }    }print "&graphicsNum=".$fileid;        closedir($dir);}?>

og det hele sammen med billeder ligger i sammen mappen.
Avatar billede rohaje Nybegynder
30. september 2004 - 00:33 #27
billederne ligger i  "grafik"-mappen. "grafik"-mappen ligger i mappen med html, swf og php

flash frame1 (eneste frame ellers en stop();):

mappen = "grafik";
var find_filer = new LoadVars();
find_filer.typen = mappen;
find_filer.onLoad = function(success) {
    if (success) {
        pictArr = new Array();
        for (n=0; n<find_filer.graphicsNum; n++) {
            pictArr[n] = find_filer["graphics_"+n];
        }
        traceField.text += "pictArr = "+pictArr;
    } else {
        traceField.text = "error "+find_filer;
    }
};

find_filer.load("findfiler.php?type="+find_filer.typen);

php'en:

<?php

$type = $_GET["type"];

// $type angiver her hvilken undermappe der skal ledes i.

$graphicsNum = 0;

//if ($dir = @opendir("http://rohaje.dk/browse/".$type)) {
if ($dir = @opendir($type)) {
    $fileid = 0;
    while($file = readdir($dir)) {
        if(!ereg("^[\.]{1,2}", $file)){
            //if (eregi("\.jpg$", $file) || eregi(".swf$", $file)) {
                $files[$fileid]["filename"] = $file;
                print "graphics_".$fileid."=".$file."&";
                $fileid++;
            //}
        }
    }
print "&graphicsNum=".$fileid;
        closedir($dir);
}

?>

//
der virker hos mig

/robert
Avatar billede jacobs1 Nybegynder
30. september 2004 - 09:11 #28
Mange tak!
men jeg kan desværre ikke få det helt til at virke, hvis du har tid og lyst har jeg lagt en zip mappe på domænet http://www.inview.dk/php/ Hvis du gad lige tjekke det, det er nok bare en meget lige ting, en fil der ligger forkert eller noget
Avatar billede rohaje Nybegynder
30. september 2004 - 09:30 #29
hvis man går ind på url:

http://www.inview.dk/php/findfiler.php

får man: The page cannot be found

1 er du sikker på at php-filen ligger php-mappen?
2 køre din server php?

jeg kan ikke se at der skulle være noget galt med dine filer, både flash'en php'en, men jeg er langt fra ekspert i php.

prøv at se her ved min url:

http://www.rohaje.dk/browse/findfiler.php?type=grafik

og så se din:

http://www.inview.dk/php/findfiler.php?type=grafik

Det ser ud til at filen ikke er der ?

mvh

Robert
Avatar billede rohaje Nybegynder
30. september 2004 - 09:36 #30
hov ,,

if ($dir = @opendir("http://www.mitnavn.dk/mappe".$type)){

,, det virkede ikke for mig med en absolut sti

prøv denne relative istedet:

if ($dir = @opendir($type)) {

,ellers må du nikolajdu på banen igen (måske et nyt spørgsmål)

mvh

Robert
Avatar billede jacobs1 Nybegynder
30. september 2004 - 10:02 #31
Det kan godt være min server ikke understøtter php? det er mit første php dok, men  mange tak for hjælpen, håber ikke i har brugt alt for mget tid på det sorry.
og endnu engang tak
Avatar billede rohaje Nybegynder
30. september 2004 - 11:53 #32
Det er da ok, håber du får det til at virke
Avatar billede nikolajdu Nybegynder
03. oktober 2004 - 19:10 #33
virker det? Jeg har været på ferie så jeg har desværre ikke fået svaret uner sydens sol ;-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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