Skutecznie zrealizujemy Twój przekaz

Szybki kontakt:
+48 509 688 024
formularz kontaktowy

Pobieranie rozmiaru pliku z serwera i wyświetlanie we Flashu

Wstęp

Działając po stronie klienta Flash samodzielnie nie posiada możliwości dostępu do plików serwera. Jednak takie możliwości ma w połączeniu np. z PHP. W poniższym tutorialu dowiecie się jak przeprowadzić proces odczytu rozmiaru konkretnego pliku, krok po kroku. Jest to też dobry przykład na to, jak może odbywać się komunikacja pomiędzy Flashem i PHP.

Utworzenie pola tekstowego wyświetlającego rozmiar

Po pierwsze należy utworzyć we Flashu pole tekstowe, które będzie wyświetlało rozmiar pliku przekazany nam przez skrypt php. Żeby to zrobić wybieramy narzędzie tekstowe, w panelu properties wybieramy rodzaj pola dynamic text i tworzymy pole na scenie. Następnie nadajemy polu nazwę (eng. instance name) "filesizeField".

parametry pola tekstowego

Kod ActionScript

Kolejnym krokiem jest umieszczenie na nowej warswie kodu ActionScript odpowiedzialnego za wysyłanie nazwy pliku do skryptu na serwerze i odbieranie jego wielkości.

/*  ActionScipt by Devoth  */
/*      www.devoth.pl      */
// funkcja wysylajaca nazwe pliku podanego jako parametr
// do skryptu php, ktory zwraca wielkosc pliku
function get_file_size(filename) {
  // tworzymy obiekt LoadVars obslugujacy komunikacje z php
  var my_lv:LoadVars = new LoadVars();
  my_lv.onLoad = function(success:Boolean) {
    if (success) {
      // jesli sukces to przypisujemy tekst
      // do wczesniej utworzonego pola tekstowego
      _root.filesizeField.text = this.rozmiar_pliku+" bytes";
    } else {
      // jesli porazka to wypisujemy komunikat o bledzie
      _root.filesizeField.text ="Błąd w procedurze LoadVars.";
    }
  };
  // wyslanie zapytania do skryptu php
  my_lv.load("filesize.php?nazwa_pliku="+filename);
}
stop();
// wywolanie wczesniej napisanej funkcji
// z interesujaca nas nazwa pliku jako parametrem get_file_size("getting_filesize.swf");

Kod skryptu PHP

Tworzymy plik filesize.php a następnie w kodzie:

  1. Odbieramy zmienną z tablicy $_GET (ważne żeby odwoływać się w ten sposób a nie przez zmienne globalne).
  2. Pobieramy rozmiar pliku o zadanej nazwie.
  3. Wyświetlamy go w formie ciągu który zostanie z odebrany i zinterpretowany przez flasha. Robimy to w ten sposób ze tworzymy zmienną która będzie we flashu dostępna jako zmienna w obiekcie LoadVars.

<?php
  /* autor Devoth: www.devoth.pl */
  // pobieranie i wyswietlanie rozmiaru pliku
  // o nazwie przeslanej w adresie
  $nazwa_pliku = $_GET['nazwa_pliku'];
  $rozmiar_pliku = filesize($nazwa_pliku);
  echo 'rozmiar_pliku=' . $rozmiar_pliku;
?>

Podsumowanie

Pamiętajcie o jednej ważnej rzeczy - kod przedstawiony w tym tutorialu, potrzebuje do działania środowiska serwerowego (np. Apache), z zainstalowaną obsługą PHP.

Jeszcze jedna uwaga - tak przygotowany kod php, powinien być jeszcze dodatkowo zabezpieczony, gdyż w tym wypadku umożliwia odczyt wielkości dowolnego pliku na serwerze (być może nie jest to bardzo poważne zagrożenie, ale zawsze luka w systemie).

Mam nadzieję że ten artykuł przybliżył wam zagadnienie współpracy Flasha ze środowiskiem serwerowym.

Masz jakieś pytania lub sugestie, może zauważyłeś błąd w powyższym artykule? Napisz do mnie używając tego formularza kontaktowego.

Autor: Łukasz Mazurek. 22 stycznia 2007r
ostatnia aktualizacja: 22 stycznia 2007r

Pliki

.fla, .swf i .php skompresowane w archiwum .zip:

Linki