Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] listowanie katalogu na dysku
flashion
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


witam serdecznie,
chciałem się zapytać, czy jest możliwość napisania takiego kodu w php, aby wyświetlał nazwy plików znajdujących się w danym katalogu na dysku twardym?

pozdrawiam
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Funkcje: opendir, readdir, closedir Przykład nawet w manualu:
  1. $dir = "/etc/php5/";
  2.  
  3. // Open a known directory, and proceed to read its contents
  4. if (is_dir($dir)) {
  5. if ($dh = opendir($dir)) {
  6. while (($file = readdir($dh)) !== false) {
  7. echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
  8. }
  9. closedir($dh);
  10. }
  11. }

za: http://php.net/manual/en/function.opendir.php
Go to the top of the page
+Quote Post
flashion
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


coś mi nie śmiga, może źle wpisuję ścieżkę?

Kod
<?php
$dir = "file:///c:/totalcmd/";

// Open a known directory, and proceed to read its contents
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            echo "filename: $file : filetype: " . filetype($dir . $file) . "\n";
        }
        closedir($dh);
    }
}
?>


Ten post edytował flashion 15.01.2010, 18:49:55
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie pamiętam jak to było na windzie, spróbuj bez tego: file:///
a jak nie pomoże to poodwracaj slashe
a jak to nie pomoże to zostaw to: file:/// i poodwracaj slashe (IMG:style_emoticons/default/smile.gif) (IMG:style_emoticons/default/dry.gif)

Ten post edytował darko 15.01.2010, 18:53:52
Go to the top of the page
+Quote Post
Burned
post
Post #5





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ludzie, przestańcie się męczyć z tym opendir itd
Do tego służy funkcja glob
Go to the top of the page
+Quote Post
flashion
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


Kod
<?php
foreach (glob("file:///c:/totalcmd/") as $filename) {
    echo "$filename size " . filesize($filename) . "\n";
}
?>


zwraca
Warning: Invalid argument supplied for foreach()...
i nic poza tym

Ten post edytował flashion 15.01.2010, 19:08:28
Go to the top of the page
+Quote Post
Kruq
post
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 8.02.2004
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


  1. $dir="c:/totalcmd/";
  2. echo $dir;
  3. $filesArray=glob($dir."*");
  4.  
  5. $line.=print_r($filesArray, true);
  6. $line.="<hr>";
  7.  
  8. for($i=0;$i<count($filesArray);$i++) {
  9. $line.=$filesArray[$i]."<br/>";
  10. }
  11.  
  12. echo $line;


Spróbuj tak , przerobiony przykład z manuala ...

Ten post edytował Kruq 15.01.2010, 19:35:29
Go to the top of the page
+Quote Post
Burned
post
Post #8





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A bez file"// ?
Go to the top of the page
+Quote Post
flashion
post
Post #9





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


Kod
<?php
$dir=$_SERVER['cokolwiek wpisze'];
    echo $dir;
    $filesArray=glob($dir."*");

    $line.=print_r($filesArray, true);
    $line.="<hr>";

    for($i=0;$i<count($filesArray);$i++) {
        $line.=$filesArray[$i]."<br/>";
    }

    echo $line;
?>

otrzymuje liste plikow katalogu ze skryptem
@burned: próbowałem tak i tak

Ten post edytował flashion 15.01.2010, 19:36:55
Go to the top of the page
+Quote Post
Kruq
post
Post #10





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 8.02.2004
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat(flashion @ 15.01.2010, 20:36:19 ) *
Kod
<?php
$dir=$_SERVER['cokolwiek wpisze'];


zamiast tego wprowadz swoaj sciezke jaka chcesz .. poprawilem ... swoj post

Sprawdź jeszcze raz mój poprzedni post ...

U mnie działa wszystko ładnie .. katalogi i pliki ładnie wyświetlane ...
jak chcesz same pliki to w lini 3 daj *.* zamiast samej *

Ten post edytował Kruq 15.01.2010, 19:43:12
Go to the top of the page
+Quote Post
flashion
post
Post #11





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


efekt:
http://fesol.unl.pl/shark/cvvv.php

załóż sobie taki folder na dysku i zobacz czy idzie.
Go to the top of the page
+Quote Post
Kruq
post
Post #12





Grupa: Zarejestrowani
Postów: 56
Pomógł: 2
Dołączył: 8.02.2004
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


  1. $dir = ("c:/totalcmd/");
  2.  
  3. $filesArray=glob($dir."*.*");
  4.  
  5. for($i=0;$i<count($filesArray);$i++) {
  6.  
  7. $line=$filesArray[$i]."<br/>";
  8.  
  9. echo $line;
  10. }


Teraz mi wszystko ładnie działa z tym katalogiem co chcesz.

Oczywiście zakładam , że masz tam jakieś pliki, foldery c, cokolwiek w c:/totalcmd

  1. $dir = ("c:/totalcmd/");
  2. //echo $dir;
  3. $filesArray=glob($dir."*");
  4.  
  5. if (empty ($filesArray)){
  6. echo "Pusty katalog";
  7. } else {
  8. for($i=0;$i<count($filesArray);$i++) {
  9. $line=$filesArray[$i]."<br/>";
  10. echo $line;
  11. }
  12. }

A tutaj masz z ifem na pusty katalog..powinno teraz być ok, pomogłem ?

Ten post edytował Kruq 16.01.2010, 01:44:35
Go to the top of the page
+Quote Post
flashion
post
Post #13





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


niestety nie, powoli sam tracę cierpliwość do tego ;/
Kod
<?php    $dir = ("c:/totalcmd/");
    //echo $dir;
    $filesArray=glob($dir."*.*");

    if (empty ($filesArray)){
        echo "Pusty katalog";
    }  else {
        for($i=0;$i<count($filesArray);$i++) {
            $line=$filesArray[$i]."<br/>";
            echo $line;
        }
    }?>


taki kod wrzuciłem do lista.php i wysłałem na serwer.
odpalam i... "Pusty katalog"
( http://sab.cba.pl/lista.php ) <- działa tobie?

próbowałem z file, slashami, innym serwerem, innym folderem, inna przegladarka.
co mogę robić źle? dodam, ze nie kodze w php na co dzien, wiec moze to byc cos banalnego.

pozdrawiam

Ten post edytował flashion 16.01.2010, 02:21:09
Go to the top of the page
+Quote Post
darko
post
Post #14





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(flashion @ 16.01.2010, 02:20:22 ) *
niestety nie, powoli sam tracę cierpliwość do tego ;/
taki kod wrzuciłem do lista.php i wysłałem na serwer.
odpalam i... "Pusty katalog"

To jeszcze się z tym męczysz? (IMG:style_emoticons/default/dry.gif) Skoro wysłałeś na serwer, to dlaczego podajesz ścieżkę: c:/totalcmd/ (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
flashion
post
Post #15





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


a jak być powinno?
Go to the top of the page
+Quote Post
darko
post
Post #16





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


spróbuj:
$dir = "/";
albo
$dir = $_SERVER["DOCUMENT_ROOT"];

Przede wszystkim usuń te nawiasy ( )
Go to the top of the page
+Quote Post
flashion
post
Post #17





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


skąd serwer będzie wiedział, o jaki mi folder chodzi?
chyba sie nie rozumiemy: chcę, aby po wejściu na http://sab.cba.pl/lista.php przez przeglądarkę, skrypt zwrócił mi listę plików z podanego folderu na moim dysku twardym. jest taka możliwość i jeśli tak, to jak to zrobić?
Go to the top of the page
+Quote Post
Burned
post
Post #18





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


PHP jest server side - co za tym idzie nie ma dostępu do maszyny klienta. Wszystkie operacje na plikach w php wykonujesz na komputerze na którym jest skrypt.
Nie da się zrobić tak jak to sobie wymyśliłeś w PHP. Ogólnie ciężko mi wyobrazić, żeby jakikolwiek skrypt grzebał w systemie plików użytkownika tak po prostu. Po co Ci lista plików na komputerze klienta - co chcesz zrobić? Może jest lepszy sposób na to.
Go to the top of the page
+Quote Post
darko
post
Post #19





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To nawet ze względów bezpieczeństwa nie jest łatwe/do napisania, chciałbyś, żeby, przeglądając strony w necie, ktoś przeglądał, co masz na dysku twardym? Ja nie. Czyli podsumowując: skrypt jeśli nie będzie zawierał błędów, wyświetli w podanej lokalizacji listę plików znajdujących się na serwerze, a nie u Ciebie na dysku twardym. Chyba że odpalisz sobie na localhost (IMG:style_emoticons/default/winksmiley.jpg) to co innego.

Ten post edytował darko 16.01.2010, 12:24:34
Go to the top of the page
+Quote Post
flashion
post
Post #20





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 4.11.2007

Ostrzeżenie: (0%)
-----


tak właśnie myślałem, ale poprzednimi postami rozbudziliście moją nadzieję. (IMG:style_emoticons/default/winksmiley.jpg)
piszę flasha (osadzonego w html), aplikacja ma za zadanie pobrać z dysku pliki txt, odczytać ich zawartość i na podstawie ich porozsyłać żądania do zewn. skryptów (nie moich) i wyświetlić wyniki. problem tkwi w tym, że mimo to użytkownik podaje ścieżkę do folderu z tymi plikami, mają one różne nazwy. Chciałem je wyświetlić we flashu i dać userowi wybór, którego użyć.
poza tym wybrany plik musi zostać skopiowany do jakiegoś innego folderu, ponieważ jest używany jednocześnie przez inną aplikację, a flash wyrzuca błędy przy otwieraniu.
właściwie, całość moich skryptów (flasha + reszta plików) mogę udostępnić do ściągnięcia, aby user mógł sobie otworzyć go z dysku. mógłbym też zrobić okienko "przeglądaj" już z samego flasha do wyboru tych plików txt. tylko cała rzecz z tym kopiowaniem. flash raczej nie może tego zrobić. i tu moje pytanie: czy da sie to jakos inaczej wykombinowac? najlepiej z pomocą przeglądarki (flash musi być osadzony).
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 20:35