qrzysztof
21.11.2009, 22:19:19
Witam,
Mam na stronie 2-etapowy (składający się z dwóch formularzy) upload obrazków. Pierwszy formularz ("Załaduj obrazek") wgrywa go na serwer, a dopiero drugi ("Zapisz zmiany") dodaje bądź uaktualnia rekord w bazie danych.
W wyniku tego procesu nieuchronnie powstawać będą obrazki-"sieroty" (te, które zostały wgrane na serwer ale z jakichś powodów nie zapisano zmian). Jak to najlepiej rozwiązać?
Przychodzi mi do głowy dodatkowe pole w tabeli z obrazkami: "potwierdzony" z domyślną wartością 0 i zmienianą na 1 w przypadku wysłania formularza "Zapisz zmiany". A następnie okresowe ręczne lub automatycznie usuwanie "sierot". Da się to jakoś sprytniej rozwiązać zachowując te 2 etapy dodawania obrazków, czy może tak być?
MateuszS
21.11.2009, 22:21:52
A dlaczego, nie wybierasz obrazka a po 'zapisaniu zmian' on sie uploaduje?
qrzysztof
21.11.2009, 22:31:59
Mam formularz, w którym docelowo będzie można dodawać kilka obrazków, oraz zmieniać wartości pól tekstowych (wszystko przed zapisaniem zmian). W ten sposób jest to moim zdaniem bardziej czytelne. Użytkownik bardziej wie co się dzieje, że czeka bo ładuje się obrazek. A jak się załaduje to tylko proste "zapisz". Coś jak z emailami i ładowaniem załączników przed wysłaniem.
MateuszS
21.11.2009, 22:40:13
No ok, fajnie, tyle że samo wysyłanie można zrobić już po naciśnięciu buttona "zapisz". Jeżeli koleś dodał obrazek to się zapisze, jeżeli nie wybrał to zapiszą się tylko pola tekstowe.
qrzysztof
21.11.2009, 22:51:00
A jest jakiś konkretny powód, dla którego w większości skrzynek email dostępnych przez www, załączniki wysyła się najpierw na serwer a dopiero później klika "wyślij (całą wiadomość)" ?
Ja wiem, że da się ja piszesz. Ale takie obejście problemu to dla mnie ostateczność.
MateuszS
21.11.2009, 22:58:15
Mi się zawsze wydawało że robi się tak dlatego, że np. user pisze wiad. a w tym czasie się wysyła i nie musi czekać potem 5 min po naciśnięciu wyślij aż się plik prześle, poza tym może się rozmyślić i zmienić załącznik. Choć tak serio to nie wiem dlaczego tak robią, nigdy się nad tym nie zastanawiałem specjalnie.
Może spróbuj przy przesyłaniu zdeklarować sesję z linkiem do pliku, jeżeli dasz zapisz zmiany, sesja zmieni np. wartość a jeżeli po przejściu na inną stronę sesja nadal będzie miała adres w wartości, usuń obrazek... takie pierwsze skojarzenie, nawet nie wiem czy takie coś by działało
qrzysztof
21.11.2009, 23:01:27
No to tak samo jest u mnie. Tekstowe pola formularza podczas ładowania obrazka są jak najbardziej dostępne i można zaoszczędzić czas wypełniając je wtedy.
Też myślałem o sesji. Muszę pokombinować czy byłoby to wykonalne.
ziqzaq
21.11.2009, 23:15:37
Witam.
Może zrobić to na dwóch folderach? Jeden z obrazkami tymczasowymi a drugi docelowy (z już zapisanymi w bazie). Przy uploadzie tworzysz tymczasowy obrazek a jak user potwierdzi zmiany przenosisz go do docelowego katalogu.
Co jakiś czas sprawdzasz sobie czy w tymczasowym katalogu są pliki starsze niż np. 1h (czyli raczej nikt już ich nie potrzebuje), jeśli są to je usuń.
qrzysztof
21.11.2009, 23:37:18
No to też jest jakieś rozwiązanie. Generalnie podobne do tego, które podałem w 1szym poście z tą zaletą, że nie trzeba ruszać bazy.
Ciekawe jak ten problem jest rozwiązany w skrzynkach pocztowych www. Co się dzieje z załącznikami załadowanymi na serwer, ale nie wysłanymi. Czy są od razu kasowane czy lądują w jakimś, raz na jakiś czas, opróżnianym folderze tymczasowym.
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.