Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload w Ajax
Forum PHP.pl > Forum > XML, AJAX
reo
Jak przesłać pliki ajaxem?
Słyszałem że nie da się tego zrobić. No to jak działa upload zdjęć na fotka.pl?
blinksmiley.gif
NoiseMc
Tworzysz w DOM iframe o wysokosci 1 i szerokosci 1, ustawiasz action formularza pliku na jakis tam upload.php i target na iframe, odbierasz plik w upload.php. a w miedzyczasie odpytujesz caly czas baze ajaxem czy ma juz plik, jezeli baza ma plik tworzysz sobie obiekt Image w js i ladujesz do niego obrazek do tego dajesz temu obiektowi onload = schowajLoader(); pokazPlik(); usunIFrame () ... taka jest moja wizja winksmiley.jpg
reo
Czy da się zrobić tak z innymi typami plików?
Chyba nie...
sadsmiley02.gif
NoiseMc
Innymi typami plikow? Masz na mysli pdf-y i inne? No ... zamiast Image i wczytywania do niego miniaturki wyswietlasz sobie po prostu link.
reo
THX laugh.gif
envp
To nie zadziała ze względu:
1.Nie ma w php "mocy" w sprawdzaniu ile pliku zostało wysłane, dopiero od którejś z ostatnich wersji, więc będzie można sie spodziewać na serwerach hostingowcyh za 2 mc może
2.Jak w pliku dupa.php chcesz sprawdzić $_FILES[] z pliku upload.php ?
3.Upload "udawany" bez przeladowania robi się inaczej - reczywiście na iframe, ale tak, że w iframe wczytuje sie <input type="file"> potem robi sie tak, żeby to "coś" nie wygladalo jak iframe, dajesz action na upload.php a w upload.php zwracasz sobie wynik w postaci js ktory w window.parent dodaje jakiś obrazek czy cuś, ogólnie sporo czasu trzeba poświęcić, żeby to było funkcjonalne itd. imho - gra nie warta świeczki. Można zrobić inne fajne efekty, takie jak np pojawienie sie inicatora, po wcisnieciu submita upload, a dalej przescie na strone, i obrabianie - np - pomniejszanie, dodawanie logo, robienie miniaturek itp robić w każdym odzielnym skrypcie wywoływanym asynchronicznie - do tego jeszcze jakiś fajny progress bar, a wszystko wygląda PRO i do tego jest bardzo optymalne, bo upload, resizing, czy nakladanie obrazków na siebie w jednym pliku na raz zwyczajnie powoduje timeout, albo przekroczenie limitów pamięciowych u naszych polskich hostingowców... no chyba że masz dedyka smile.gif
orideith
To sie przyda

http://ajaxian.com/archives/asynchronous-f...upload-with-yui

Pozdrawiam.
reo
THX orideith smile.gif
tomaszh
było już wielokrotnie, polecam gotowe rozwiązania oparte na php i perl-u, np. w2box oraz uber uploader. Aby dostosować do swoich wymagań trzeba oczywiście trochę modyfikacji. Myślę że perl do uploadu ze statusbarem nadaje się idealnie.
lukesh
Witam!
Tworzę skrypt, który wymaga przesyłania plików w tle. Początkowo myślałem stworzyć go, bazując na oklepanej metodzie umieszczania pływającej ramki z formularzem i skryptem JAVA/AJAX, który sprawdzałby, czy plik już jest na serwerze. Czy jednak używanie AJAKSA jest rzeczywiście dobrym rozwiązaniem? Zastanawiam się nad użyciem w tym skrypcie ciasteczek... Pomysł jest prosty: w ramce znajduje się formularz, a wraz z kliknięciem na przycisk "wyślij', skrypt PHP zaczyna przesyłać dane i w ramce pojawia się stosowna informacja (np. w postaci pliku graficznego) oraz zostaje uruchomiony skrypt, który sprawdza, czy istnieje ciasteczko, np. o nazwie 'nowy_plik'. Skrypt PHP, pod koniec przesyłania pliku, może wysłać do przeglądarki ciasteczko zawierające informacje o przesłanym pliku (adres na serwerze, rozmiar itp.), które zostaną odpowiednio sformatowane i przez JS wprowadzone w odpowiednim miejscu w treść strony. Myślę, że wielkim plusem tego rozwiązania jest fakt, że, tak jak byłoby to w przypadku AJAKSA, skrypt nie musi ciągle wysyłać zapytania do serwera.
Bardzo proszę o opinie.
Łukasz
lilik
jednak to sie robi tak jak pisal NoiseMC iframe 1 na 1 a potem w pliku odpowiedzialnym za upload po wykonaniu kodu php umieszczamy

<script type=text/javascript>parent.get_obj('div_z_anmacja_uploadu').innerHTML='>Zdjęcie zostało wgrane ';parent.upload_end(nazwa_div'u);</SCRIPT>

o po krzyku
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.