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".
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:
- Odbieramy zmienną z tablicy $_GET (ważne żeby odwoływać się w ten sposób a nie przez zmienne globalne).
- Pobieramy rozmiar pliku o zadanej nazwie.
- 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.
Pliki
.fla, .swf i .php skompresowane w archiwum .zip:
Linki
- Opis funkcji filesize - szczegółowy opis użycia i działania funkcji filesize w PHP.