Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Upload galerii zdjęć
Forum PHP.pl > Forum > PHP
seba22
Witam,

Stanąłem nad problemem, który nie bardzo wiem jak rozwiązać.
Tworzę formularz dzięki któremu, w polu wielokrotnego wyboru, użytkownik może załadować zdjęcia.

Nie mogę rozważyć 2 kwestii.

1) użytkownik pomylił się, i wgrał złe zdjęcie... w takim wypadku, trzeba by, dołożyć przycisk "usuń".
2) Użytkownik wgrał, zdjęcia, np 10 sztuk i zamyka przeglądarkę bez dodania wiadomości.

Chce te operację wykonać bez przeładowywania strony.

Drugi problem, polega na tym iż użytkownik może zamknąć stronę, kiedy już 10 zdjęć będzie wgranych na serwerze... co zrobić w takiej sytuacji ?
Czy taka koncepcja będzie zła -> przekodować zdjęcie do base64, i zapisać do SESJI exclamation.gif?

Dopiero, kiedy użytkownik, wyśle formularz, -> przekonwerterowanie z sesji i zapis do pliku w jego folderze. wyczyszczenie sesji.
Dzięki temu, nie musielibyśmy martwić się o to że zamknie przeglądarkę... a pliki będą leżeć miesiącami zanim cron, albo inny skrypt je skasuje...

Druga kwestia, która jest bardziej zaawansowana, to ta związana z kasowaniem zdjęć bez przeładunku strony.

Zastanawiam się, nad wykorzystaniem biblioteki Ajax, wygenerowaniu galerii wraz z linkiem kasującym...

Ale mówię, najpierw rozważmy kwestię uploadu, potem detale smile.gif

pozdrawiam
PawelC
Cytat
Chce te operację wykonać bez przeładowywania strony.

Jeżeli chcesz umożliwić wgrywanie zdjęć bez przeładowywania strony to będziesz musiał użyć do tego Ajax-a.
Cytat
1) użytkownik pomylił się, i wgrał złe zdjęcie... w takim wypadku, trzeba by, dołożyć przycisk "usuń".
Możesz zrobić że po wgraniu pokaże mu zdjęcie, i np link z tekstem, jeżeli wgrałeś złe zdjęcie to je usuń i obok guzik usuń w którym jest ukryte pole z nazwą wgranego pliku.
Cytat
2) Użytkownik wgrał, zdjęcia, np 10 sztuk i zamyka przeglądarkę bez dodania wiadomości.

No to przed wgraniem na zdjęć możesz sprawdzić czy wpisał wiadomość, jeżeli nie wpisał to wyświetl mu wiadomość że nie wpisał wiadomości inie wgra zdjęć, a jak będzie wiadomość to zdjęcia się wgrają, to wg mnie najprostsze i najlepsze rozwiązanie.
batman
Po pierwsze - nie da się zrobić uploadu plików samym javascriptem. Wszystkie wspaniałe rozwiązania wykorzystują iframe, by wysłać zdjęcie bez przeładowania strony.

A oto jak możesz rozwiązać swój problem:
1. Wrzucasz zdjęcia prze iframe (załatwi to dowolna biblioteka JS).
2. Każde wrzucenie zdjęcia powoduje, że pojawia się ono w pod formularzem. Obok zdjęcia dajesz przycisk usuń.
3. Po jego kliknięciu wysyłasz requesta ajaxowego z nazwą zdjęcia do usunięcia. W tle usuwasz zdjęcie, a przez użytkownikiem je chowasz (np usuwasz znacznik img z drzewa DOM).
4. Fotki wrzucasz do katalogu tymczasowego (każdy użytkownik ma swój własny tmp). Dopiero jak zapiszesz formularz, to przenosisz je w docelowe miejsce. Katalog tymczasowy możesz czyścić z crona lub zostawić dla użytkownika. Może na coś mu się przyda.
seba22
Użyje SWF Upload.

Ten pomysł Iframe, chyba nie jest fajny sad.gif


Bo ja powiem, jaka jest sprawa, napiszę system który będzie generować galerie, tą tymczasową. Powiedzmy miał bym ją w pliku tmpgalery.php.


1) znaleźć w SWF Upload, parametr, który by zasygnalizował wgranie pliku.
- jeżeli plik zostanie wgrany, ajaxem ściągamy DIV z galerią winksmiley.jpg
2) iframe, który by odświeżał się co 5 sekund, ale to odpada, z powodu... już mówię z jakiego smile.gif
Trudno było by kliknąć w przycisk usuń, przez 20 fotkach, kiedy strona by migała, z powodu przeładunku winksmiley.jpg


Niestety nie widzę tutaj odpowiedzi w JS, o finalizacji upload u:

http://swfupload.org/sites/swfupload.org/f...oad-Process.pdf


http://demo.swfupload.org/v220/simpledemo/index.php

O to, bym chciał użyć...
Tylko żeby dorobić [ if uploaded complete -> js query, refresh div content] <- to pseudokod, co chciał bym uzyskać !
Za odświerzenie DIV-a, odpowiadało by biblioteka, więc nie ma tu problemu, że sobie nie poradzę.
Nie wiem, jak wyciągnąć ten "On complete" .

Resztę powinienem zrobić winksmiley.jpg
batman
Pamiętaj, że w przypadku SWF-a upload Ci nie zadziała w flash playerze 10 (chyba, że coś poprawili). Ostatnio jak sprawdzałem, to wersja ta miała babola, który skutecznie uniemożliwiał upload plików.

Nie do końca rozumiem po co chcesz odświeżać iframe co 5 sek. Ten iframe zawiera tylko i wyłącznie formularz do uploadu zdjęcia. Sama galeria zaciągana jest ajax-em, a to możesz zrobić po wrzuceniu fotki.
seba22
Tak, ale przy swf upload, jak mam znaleźć zmienną, / funkcję która mi zaciągnie zawartość diva ajaxem.

Tu jest problem.

Zaciągnąć przez przycisk ajaxem, to pikuś.
Problem w tym żeby zaciągło, w momencie "on upload complete" i bach, refresh diva, przez ajax.

Cytat
March 27, 2009 - 1:15pm — gyphie

SWFUpload v2.2.0 has been released and is available for download.

Changes in this version:

* Flash Player 10 Compatibility


Flash 10 wspierany, na linuksie działa poprawnie.
erix
Cytat
Drugi problem, polega na tym iż użytkownik może zamknąć stronę, kiedy już 10 zdjęć będzie wgranych na serwerze... co zrobić w takiej sytuacji ?

Najlepiej będzie, gdy zrobisz osobny katalog tymczasowy na zdjęcia. Trzymaj nazwy jako unikatowe identyfikatory i zapisuj je w sesji danego delikwenta. A GC wywoływany via Cron posprząta śmieci, jeśli ktoś się rozmyśli.

Cytat
a pliki będą leżeć miesiącami zanim cron, albo inny skrypt je skasuje...

Ustawiasz jakiś TTL, powiedzmy na 24h i sprawdzasz filectime" title="Zobacz w manualu PHP" target="_manual. winksmiley.jpg

Cytat
Druga kwestia, która jest bardziej zaawansowana, to ta związana z kasowaniem zdjęć bez przeładunku strony.
Zastanawiam się, nad wykorzystaniem biblioteki Ajax, wygenerowaniu galerii wraz z linkiem kasującym...

I IMHO słuszna droga. Związane z moją pierwszą odpowiedzią - masz identyfikatory w sesji - sprawdzasz, czy zgadzają się z linkiem i spokój. winksmiley.jpg
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.