Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Download i upload plików
Forum PHP.pl > Forum > Przedszkole
Maniek1313
Witam wszystkich mam 2 pytanie. A mianowicie chciałbym się dowiedzieć czy są jakieś gotowe polecenia w php umożliwiające wyświetlenie w tabeli listy plików , które znajdują się np. w folderze download i żeby po kliknięciu na nazwę pliku móc pobrać ten plik.

A moje drugie pytanie brzmi czy są jakieś gotowe polecenia umożliwiające upload plików na serwer questionmark.gif
potreb
Tak, możesz to zrobić poleceniem glob, a co do uploadu move_uploaded_files. Tego na forum jest pełno wystarczy poszukać i przetestować niektóre rozwiązania.
Maniek1313
Zrobiłem tak ale nie chce pobierać plików np. php inne typy plików jak np. rar pobiera dobrze.

  1. <?php
  2. foreach (glob("*.*") as $filename) {
  3. echo '<table width="100%" border="0">
  4. <tr>
  5. <td width="49%"><a href="'.$filename.'">'.$filename.'</a> rozmiar : </td>
  6. ';
  7. $rozmiarmb = filesize($filename) / 1000000;
  8. $rozmiarkb = filesize($filename) / 1000;
  9. echo' <td width="51%">'.number_format($rozmiarmb,2,',','').' mb ('.number_format($rozmiarkb,2,',','').' kb)</td>
  10. </tr>
  11. </table>';
  12. }
  13. ?>
potreb
W foreachu dajesz table, raczej table definiuj przed foreach. Dla glob możesz ustalić jakie typy plików funkcja ma szukać. A jak pobierasz plik? Masz jeszcze taką funkcje jak patrhinfo, skąd możesz wyciągnąć rozszerzenie pliku. Poczytaj sobie komentarze do GLOB, tam również masz rozwiązania.
Maniek1313
Czyli pobiera się pliki funkcją GLOB tak questionmark.gifquestionmark.gif czy źle coś zrozumiałem questionmark.gifquestionmark.gif
peter13135
glob nie pobiera plików (cokolwiek by to nie znaczyło) tylko wyszukuje pliki z danego folderu.
Maniek1313
A to jaką funkcję pobiera się pliki questionmark.gif
Robert007
opendir
peter13135
Cytat(Maniek1313 @ 27.08.2011, 14:29:25 ) *
A to jaką funkcję pobiera się pliki questionmark.gif

O co Ci tak właściwie chodzi ? Chcesz pobrać plik za pomocą PHP ?
jak masz ścieżkę do pliku taką : htdocs/pliki/plik.zip to user pobierze go wpisując do przeglądarki : www.adres.pl/pliki.pliki.zip
Ty oczywiście możesz zautomatyzować to wpisywanie, robiąc link <a href="tutaj_link">lalal</a>
Listę plików możesz z danego folderu możesz otrzymać globem, czy scandirem
Maniek1313
A jak zrobić żeby móc pobierać też takie pliki jak .php , czy .txt.
peter13135
"force-download" - wpisz w google, poczytaj
Maniek1313
Dzięki działa już biggrin.gif

Znalazłem na stronach 2 kody i połączyłem je w jeden

To jest plik download.php

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Dokument bez tytułu</title>
  6. </head>
  7. <body>
  8. <table width="50%" border="2">
  9. <?php
  10. foreach (glob("pliki/*.*") as $filename) {
  11. echo '<tr><td align=center width="33%">'. $filename .'</td><td align=center width="33%">size ' . filesize($filename) . '</td>';
  12. echo '<td align=center width="33%">
  13. <form id="form" name"form" method="post" action="pobierz.php">
  14. <input type="hidden" name="link" value="'.$filename.'" />
  15. <input name="pobierz" type="submit" value="Pobierz" />
  16. </form></td></tr>';
  17. }
  18. ?>
  19. </table>
  20. </body>
  21. </html>



A o to plik pobierz.php :

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Dokument bez tytułu</title>
  6. </head>
  7. <body>
  8. <?php
  9. $link = $_POST['link'];
  10.  
  11. if (file_exists($link)) {
  12. header('Content-Description: File Transfer');
  13. header('Content-Type: application/octet-stream');
  14. header('Content-Disposition: attachment; filename='.basename($link));
  15. header('Content-Transfer-Encoding: binary');
  16. header('Expires: 0');
  17. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  18. header('Pragma: public');
  19. header('Content-Length: ' . filesize($link));
  20. flush();
  21. readfile($link);
  22. }
  23. ?>
  24. </body>
  25. </html>


Pliki .php , .html , .css itd pobiera normalnie ale za to pliki np. .mp3 już nie pobiera questionmark.gifquestionmark.gif W czym jest problem questionmark.gifquestionmark.gif

PS już znalazłem przyczynę problemu "spacja w nazwie pliku"

Mam pytanie da radę jakoś podczas wczytywania do zmiennej nazwy pliku usuwać spację i polskie znaki.

questionmark.gifquestionmark.gif
peter13135
str_replace wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.