• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP- otweiranie i pobieranie wszystkich plików z katalogu

42 Warsaw Coding Academy
+1 głos
622 wizyt
pytanie zadane 22 kwietnia 2021 w PHP przez TheDarkSide Użytkownik (930 p.)

Tak wiem , że od tego jest fopen. Da się zrobić tak żeby każdy plik z katalogu był otwieralny i pobieralny bez wpisywania fopen do kazdego oddzielnie ? Po prostu FOPEN do calego katalogu czy cos takiego.Chodz o to zeby po wrzuceniu nowego pliku nie dopisywac nic w kodzie tylko była automatyczna mozliwosc jego otwarcia i pobrania.

</div> 
<?php
$katalog    = './Pliki';
$pliki = scandir($katalog);
foreach($pliki as $plik) echo '<p>'.$plik.'</p>';
?>


 

2 odpowiedzi

+3 głosów
odpowiedź 22 kwietnia 2021 przez SzkolnyAdmin Szeryf (89,610 p.)
edycja 22 kwietnia 2021 przez SzkolnyAdmin

Chcesz otwierać pliki czy tworzyć linki do pobrania? w tym drugim przypadku zrób tak (zakładam, że w katalogu masz tylko pliki):

$katalog    = './Pliki';
$pliki = scandir($katalog);
foreach($pliki as $plik) {
    if($plik!="." && $plik!="..") echo '<a href="./Pliki/'.$plik.'">'.$plik.'</a>';
}

Instrukcja warunkowa powoduje, że nie pojawiają się symbole katalogu bieżącego (.) i nadrzędnego (..).

1
komentarz 22 kwietnia 2021 przez VBService Ekspert (256,600 p.)

Chyba jednak,  && zamiast ||  wink

if($plik!="." && $plik!="..")

 

1
komentarz 22 kwietnia 2021 przez SzkolnyAdmin Szeryf (89,610 p.)
Oczywiście, zaraz poprawię. Mea culpa, mea maxima culpa!
komentarz 23 kwietnia 2021 przez TheDarkSide Użytkownik (930 p.)

@SzkolnyAdmin,Wszystko super dziękuję bardzo tylko teraz pliki się wyświetlają jako jeden ciąg a nie jako lista a ja naprawdę nie ogarniam PHP crying.

Jak  ustawić to jako listę ? 

 

komentarz 23 kwietnia 2021 przez SzkolnyAdmin Szeryf (89,610 p.)

No to zrób listę z odnośników:

$katalog    = './Pliki';
$pliki = scandir($katalog);
echo '<ul>';
foreach($pliki as $plik) {
    if($plik!="." && $plik!="..") echo '<li><a href="./Pliki/'.$plik.'">'.$plik.'</a></li>';
}
echo '</ul>';

 

0 głosów
odpowiedź 22 kwietnia 2021 przez VBService Ekspert (256,600 p.)
edycja 23 kwietnia 2021 przez VBService

A oto Moja propozycja  wink

$katalog    = './pliki/';

$pliki = array_slice(scandir($katalog), 2);
$linki1 = '';
foreach ($pliki as $plik) {
    if (!is_dir($katalog.$plik)) $linki1 .= '<a href="'.$katalog.$plik.'">'.$plik.'</a>';
}

lub

$katalog    = './pliki/';

$pliki = array_diff(scandir($katalog), ['..', '.']);
$linki2 = '';
foreach ($pliki as $plik) {
    if (!is_dir($katalog.$plik)) $linki2 .= '<a href="'.$katalog.$plik.'">'.$plik.'</a>';
}

lub

$katalog = './pliki/';

$linki3 = '';
foreach (glob("{$katalog}*.???") as $plik) {
    $linki3 .= '<a href="'.$plik.'">'.basename($plik).'</a>';
}

index.php

<?php
$katalog    = './pliki/';

$pliki = array_slice(scandir($katalog), 2);
$linki1 = '';
foreach ($pliki as $plik) {
    if (!is_dir($katalog.$plik)) $linki1 .= '<a href="'.$katalog.$plik.'">'.$plik.'</a>';
}


$pliki = array_diff(scandir($katalog), ['..', '.']);
$linki2 = '';
foreach ($pliki as $plik) {
    if (!is_dir($katalog.$plik)) $linki2 .= '<a href="'.$katalog.$plik.'">'.$plik.'</a>';
}


$linki3 = '';
foreach (glob("{$katalog}*.???") as $plik) {
    $linki3 .= '<a href="'.$plik.'">'.basename($plik).'</a>';
}
?>
<style>
p {
  margin-top: 1em;
  margin-bottom: 0.5em;
}
a {
  display: block;
}
</style>
<body>
<p>array_slice</p>
<?php echo $linki1; ?>

<p>array_diff</p>
<?php echo $linki2; ?>

<p>glob</p>
<?php echo $linki3; ?>
</body>

 

glob - Find pathnames matching a pattern ]

Podobne pytania

+1 głos
1 odpowiedź 220 wizyt
0 głosów
1 odpowiedź 139 wizyt

93,394 zapytań

142,387 odpowiedzi

322,550 komentarzy

62,752 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...