Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak zrobić skrypt downloadu, który zapisuje obraz na dysku ?
Forum PHP.pl > Forum > Przedszkole
Adam-240
Witam, mógłby mi ktoś powiedzieć jak zrobić taki skrypt, który będzie wyświetlał obrazek pobrany z folderu i pod nim będzie przycisk, a po kliknięciu w niego będzie pobierał obraz na dysk ?

Najlepiej jakby ktoś mi pokazał skrypt i wytłumaczył mniej więcej jak to działa abym wiedział jak mam jego używać i na przyszłość, gdy opanuję trochę PHP bym umiał go edytować i dostosować do własnych potrzeb.

Przykład:



Z góry dzięki, nie wstawiam tego do giełdy ponieważ nie chodzi mi tylko o skrypt ale także o wytłumaczenia jak on działa.
gox
php header force-download -- frazka do google jak malowanie.
hiszpanespaniol
edit: to jest błędny kod, prawidłowy na dole tego postu.
  1. <?php
  2. $katalog = dir('/sciezka/do/obrazkow');
  3.  
  4. $pliki = array();
  5.  
  6.         while ($plik = $katalog->read ()) {
  7.             if (($plik != '.') AND ($plik != '..') AND !(is_dir($katalog.'/'.$plik))) {
  8.                 $pliki[] = $plik;
  9.             }
  10.         } 
  11.  
  12. natcasesort($pliki);
  13.  
  14. $lista_obrazkow = '
      ';
  15.  
  16. foreach ($pliki as $konkretny) {
  17.  
  18. $lista_obrazkow .= '<li><a href="'.$sciezka.'/'.$konkretny.'"><img src="'.$sciezka.'/'.$konkretny.'" alt="" /><br />zapisz</a></li>';
  19.  
  20. }
  21.  
  22. $lista_plikow .= '
  23. ';
  •  
  • echo $lista_plikow;
  • ?>



  • definiujesz katalog z którego php ma czytać.

    1. inicjujesz tablicę która będzie zawierać nazwy obrazków
    2. dopóki pętla czyta z katalogu (pomijając wszystkie katalogi które tam są, zawsze conajmniej dwa), to dopisuje do tablicy kolejne pozycje.
    3. sortujesz tablicę
    4. tworzysz zmienną do której będziesz dopisywał kolejne pozycje.
    5. dla każdego elementu tablicy (czyli dla każdego pliku w katalogu, pętla foreach) tworzysz element listy html, dopisujesz go do swojej zmiennej.
    6. dopisujesz końcówkę do swojej zmiennej
    7. wyświetlasz zmienną na stronie

    pisane z pamięci, mogłem się pomylić. poza tym nie jestem pewien, czy !is_dir nie załatwia też sprawy tych kropek

    edit:
    dodałem apostrofy w dir


    edit2:

    powyższy kod jest całkowicie błędny, podaję prawidłowy:

    1. <?php
    2. $sciezka = '/sciezka/do/obrazkow';
    3.  
    4. $katalog = dir($sciezka);
    5.  
    6. $pliki = array();
    7.  
    8. while ($plik = $katalog->read() ) {
    9.  
    10. if (($plik != '.') AND ($plik !- '..')) {
    11.  
    12. $pliki[] = $plik;
    13.  
    14. }
    15.  
    16. }
    17.  
    18. natcasesort($pliki);
    19.  
    20. $lista_obrazkow = '<ul>';
    21.  
    22. foreach ($pliki as $konkretny) {
    23.  
    24. $lista_obrazkow .= '<li><a href="'.$sciezka.'/'.$konkretny.'"><img src="'.$sciezka.'/'.$konkretny.'" alt="" /><br />zapisz</a></li>';
    25.  
    26. $lista_obrazkow .= '</ul>';
    27.  
    28. echo $lista_obrazkow;
    29. ?>


    i do tego zastosuj to co kolega wyżej napisał.
    przepraszam za błędy
    Adam-240
    A da się tak zrobić:


    Kod
    <?php
    $sciezka = '/sciezka/do/obrazkow';

    $katalog = dir($sciezka);

    $pliki = array();

    $licznik = 21;

    while ($plik = $katalog->read($licznik>0) ) {

    if (($plik != '.') AND ($plik !- '..')) {

    $pliki[] = $plik;

    $licznik = $licznik - 1;

    }

    }

    natcasesort($pliki);

    $lista_obrazkow = '<ul>';

    foreach ($pliki as $konkretny) {

    $lista_obrazkow .= '<li><a href="'.$sciezka.'/'.$konkretny.'"><img src="'.$sciezka.'/'.$konkretny.'" alt="" /><br />zapisz</a></li>';

    $lista_obrazkow .= '</ul>';

    echo $lista_obrazkow;
    ?>


    Bo chodzi mi o to aby nie wyświetlała w nieskończoność ta pętla tylko było 20 pozycji.

    czy to co dodałem jest poprawne i będzie dobrze działało ?
    pbierni
    Witam
    Proponowałbym pobrać wszystkie pliki a dopiero potem ograniczyć ich wyświetlanie. Masz w tym momencie wieksze pole manewru z plikami np jakieś sortowanie itd. A co do zapisu plików na dysku to http://forum.php.pl/index.php?showtopic=106241.

    Pozdrawiam
    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.