Logika wysyłania plików na serwer: php, javascript i ajax

Zasób internetowy to "punkt" w przestrzeni informacyjnej sieci World Wide Web. Informacje na niej wyświetlane są zwykle prezentowane statycznie, a odwiedzający ogląda je. Możesz podać link do dokumentu lub innego zasobu, a odwiedzający pobierze plik z informacjami lub podąży za linkiem.

Proste narzędzia służą do wysyłania informacji do serwera lub odbierania ich z niego. Ale ich inteligentne wykorzystanie i logika użytkowania nie jest tak prosta, gdy chodzi o organizację bezpiecznego, stabilnego i niezawodnego przetwarzania danych.

Pobieranie pliku

Jest prosty pomysł: jest wysyłanie i pobieranie. Pierwszym z nich jest wysłanie pliku na serwer, drugim jego pobranie. Aby wykonać pierwsze zadanie, informację można po prostu wyświetlić w przeglądarce, w oknie na stronie lub podać link do zasobu informacyjnego. Do drugiego zadania wystarczy napisać na serwerze formularz pobierania i kod jego przetwarzania.

Proste narzędzia do przesyłania danych

W tym przykładzie (1) - dwa warianty linku (bez użycia PHP) do wysyłania plików z serwera, (2) - formularz do wysyłania plików na serwer. Tutaj użycie PHP jest podstawą. Użycie bardziej zaawansowanej logiki ładowania niż zwykle.

W zasadzie wystarczy zapisać powyższy formularz w kodzie strony i zapewnić obsługę tablicy $_FILES.

Zapisz przesłany plik

Sprawdzanie nazw plików (funkcja scCheckFileName) jest opcjonalne, ale dla bezpieczeństwa i niezawodności - warto to robić. Zdefiniuj zasady dla każdego pobranego pliku - zastaw niezawodna praca Zasób internetowy i jego poszanowanie przez odwiedzającego.

Logika ładowania serwera

Hosting to nie to samo co hosting, ale używanie rosyjskich liter i niektórych symboli w nazwach plików - jest obarczone niebezpieczeństwem. Może "napisać" plik, ale potem "nie udaje" się go odczytać lub usunąć. Aby uniknąć niejasności, najlepiej jest zmienić nazwę i zapisać plik pod nazwą, którą każdy hoster chętnie zaakceptuje.

W tym kontekście, pobieranie plików na serwer: PHP + MySQL. Korzystając z języka, pobieramy plik. Skojarzenie pomiędzy rzeczywistą nazwą pliku a unikalną nazwą pliku jest dokonywane automatycznie przez bazę danych. Najprostsze rozwiązanie, jak uzyskać Kod MD5 jest unikalną sekwencją 32 bajtów. Podczas wykonywania uploadu plików na serwer, PHP jest "włączane" na serwerze poprzez AJAX.

Uruchamianie PHP przez AJAX

Tutaj funkcja scfCheckFile() koduje prawdziwą nazwę pliku, generuje unikalny kod MD5 i uruchamia mechanizm transferu danych poprzez AJAX. W tym momencie serwer nie ładuje pliku, a jedynie sprawdza, czy plik istnieje dzięki swojemu unikalnemu kodowi. Jeśli nie zostanie znaleziony taki plik, zostanie wygenerowana nowa nazwa pliku i rekord zostanie umieszczony w wierszu tabeli.

Funkcja scfGetFile() potwierdza, że plik został załadowany i uaktualnia rekord pliku.

Wynik: plik został załadowany, rekord tabeli został wygenerowany. Przesyłanie plików na serwer za pomocą PHP & AJAX z JavaScriptem - dobre i niezawodne rozwiązanie.

Mechanizm AJAX do wysyłania plików

InitXML() inicjuje przesyłanie danych AJAX-em. Uruchomienie wysyłania plików PHP, JavaScript i AJAX na serwer za pomocą oferowanego kodu - bezpiecznie i pewnie.

Uruchomienie AJAX-a

Uzyskaj odpowiedź z serwera za pomocą funkcji WaitReplySC(). Po prawej stronie znajduje się kod dla dwóch sytuacji: sprawdzanie czy plik istnieje przed wysłaniem oraz właściwa procedura wysyłania pliku.

Odpowiedź na serwer AJAX

warianty kodowania mogą być różne, istotne jest to, że przycisk pobierania pliku nie jest aktywny dopóki plik nie zostanie wybrany i sprawdzony przez serwer.

Logika procesu wysyłania

Kod serwera PHP

Serwer powinien sprawdzić, czy plik może zostać pobrany. Bariery dla uploadu są zależne od wykonywanego zadania, ale zawsze ważne jest, aby nie nadpisać informacji, czyli przewidzieć i zablokować ponowny upload pliku na serwer w PHP.

Aby rozwiązać ten problem, najprościej jest stworzyć tabelę w bazie danych MySQL i zaznaczyć tam jeden wiersz dla każdego pobranego pliku. Tutaj możesz przechowywać prawdziwą nazwę pliku, jego rozszerzenie, datę pobrania, zachować zapis operacji na nim itp.

Kod serwera do sprawdzania nazwy pliku

To jest kod sprawdzający czy plik istnieje po jego unikalnej nazwie. Funkcja obiektu bazy danych $oBase NewViuq() określa unikalną nazwę elementu do załadowania i ustawia ją na rzeczywistą nazwę pliku.

Kod serwera do przesyłania plików

Jeśli sprawdzanie nazwiska zakończyła się sukcesem, odwiedzający klika przycisk upload, a mechanizm AJAX inicjuje przesłanie pliku na serwer. Kod PHP koryguje wpis w tabeli MySQL i daje następujący wynik:

Wynik pobierania pliku

W systemie plików pojawił się kolejny element, a wiersz tabeli tego pliku otrzymał swoją ostateczną zawartość. Pole statusu (f_status) zawiera symbol "N", tzn. nie wykonano jeszcze żadnej operacji na przesłanym pliku.

Logika komunikacji

Wszechobecność *docxa, *docxa, *docxa.xlsx, *.pdf i archiwa doprowadziły do powstania koncepcji, która nie jest do końca słuszna: HTML & Pobranie plików z serwera przez PHP jest linkiem do nich. Nie musi to oznaczać, że odwiedzający pobiera dany element. Często programista po prostu otwiera plik w przeglądarce, aby go obejrzeć.

Wiele zadań wymaga zmiany informacji w takich plikach. Osoba administrująca stroną sprawdza zestaw aktualnych plików, pobiera je, modyfikuje i odsyła na serwer. Taka logika powoduje znaczny ruch, obciąża kanały komunikacyjne i sprawia, że zarówno utrzymanie zasobów sieciowych, jak i praca z nimi jest pracochłonna.

Oczywiście, nie da się zmienić obecnego systemu relacji informacyjnych w firmie. Jeśli organizacja plików jest priorytetowa, powinna być zoptymalizowana. Jeśli możesz możliwość przekształcenia plików w dane i pracy z nimi bezpośrednio, to idealną opcją byłoby pobranie, przekształcenie ich w aktywną formę, która pozwala na zmianę treści poprzez jej elementy. Kiedy plik musi zostać przesłany z serwera, jest on konwertowany w jego aktualnym, zaktualizowanym stanie i wysyłany do konsumenta.

Artykuły na ten temat