PHP Uploader

0

Witam, przeszukałem całe internety i wychodzi na to, że jestem głupi. Bo takie rozwiązanie na pewno jest z którego ja chcę skorzystać. Nigdy nikogo o pomoc nie prosiłem, zazwyczaj siedziałem nawet po parę dni przy jednym błędzie, jeśli nie mogłem sobie z nim poradzić i w końcu się udawało. Ale przy tym już nie mam siły.
Jak zrobić coś takiego jak na Allegro podczas dodawania oferty?
Chciałbym stworzyć formularz, w którym do uzupełnienia są pola tekstowe + dodanie wielu obrazków (tu by się przydały dostępne w necie rozwiązania - miniaturka przesyłanego obrazka i pasek postępu. Chociaż ta miniaturka nie taka konieczna..). I by obrazki nie zapisywały się same po dodaniu, lecz dopiero po kliknięciu input submit wraz ze wszystkimi innymi polami tekstowymi.
Pomożecie?

0

takie rozwiązanie jest praktycznie w każdym frameworku php, gdzie możesz też określić typ pliku, wielkość, ilość, walidację pól itp. pewnie jest też sporo gotowców na githubie, na czystym php się zajedziesz na dłuższą metę ;)

0

Albo ja jestem głupi albo się nie do końca rozumiemy. Ja wiem, że jest pełno takich rozwiązań, ale.. No załóżmy, żę chciałbym skorzystać z takiego rozwiązania: https://fineuploader.com/demos. I teraz jak to połączyć? Bo zdjęcia przesyłają się od razu przy dodaniu. Jest tez niżej opcja aby wybrać pliki i osobnym buttonem rozpocząć upload. Zależy mi na tym by zdjęcia wgrywać na serwer wraz z przesyłaniem wszystkich innych zawartości inputów (np. Imię, nazwisko). Nie chce takiej sytuacji, że użytkownik wgra na serwer zdjęcia, a nie prześle zawartości reszty inputów. Ew. można by było zrobić tak: uzupełnia się wszystkie inputy, następnie wybiera zdjęcia do przesłania i się je wgrywa na serwer do tymczasowego folderu (jeśli użytkownik tylko wgra zdjęcia i nie prześle reszty inputów to fajnie by było gdyby te zdjęcia się usuwały) i po wciśnięciu inputa submit do całego formularza, dane z inputów są zapisywane, a zdjęcia przesłane wcześniej dostają nowe nazwy i są przenoszone do właściwego folderu z wgranymi i zatwierdzonymi obrazkami.

Kurczę no nie możliwe, że tyle z tym problemu. Dalibyście jakiś szkielet skryptu do takiego rozwiązania jak ja chcę zrobić? Już mnie ten temat meczy, a nie mogę sobie z tym za cholerę poradzić :P

3

No i dobrze piszesz. Możesz wykorzystać wskazany skrypt lub podobny. Niech pliki uploadują się przy użyciu Ajax do tymczasowego katalogu. W wyniku działania skryptu możesz oprócz tego co skrypt robi teraz, dodać pola formularza typu hidden z nazwami plików( oczywiście jeśli Ajax nie zwróci żadnego błędu, jak zwróci to go wyświetlić). Potem od strony serwera po przesłaniu skryptu sprawdzasz jeszcze zawartość ukrytych pól i przenosisz obrazki do właściwego katalogu. Użytkownik wtedy ma walidację 2 etapową. Najpierw sprawdza wgrywane pliki (pewnie jakaś wielkość, rozszerzenie itp.) no i jeśli byłoby coś nie tak to Ajax ma zwrócić błąd. Potem sprawdzasz resztę formularza.

1

Jedno z możliwych podejść:

  1. Robisz automatyczny upload obrazków AJAX-em który to następuje po wybraniu w polu input type file jakiegoś tam zdjęcia, to wgrywa się na serwer. Po wgraniu miniaturki pokazują się w odpowiednich miejscach formularza.
  2. W bazie danych masz tabelę dajmy na to uploads a do niej po takim uploadzie dodany jest wpis, tj. nazwa wgranego pliku i jakiś termin ważności, zakładam że pliki są wgrywane do jakiegoś tam dajmy na to podkatalogu uploads. Oczywiście mam na myśli że może być więcej niż jedno zdjęcie związane z formularzem ogłoszenia.
  3. Masz już wgrane automatycznie na serwerze zdjęcia (i związane z nimi wpisy w tej tymczasowej tabeli w bazie), wypełniasz dalej pozostałe pola Twojego formularza, chcesz wystawić jakieś tam ogłoszenie sprzedaży np. samochodu. Wypełniasz wszystkie pola, wciskasz submit, dane zapisują się do bazy do tabeli ogłoszeń a wpisy w tabeli uploads aktualizujesz tak, żeby były powiązane z tym właśnie dodanym ogłoszeniem albo przenosisz do właściwej tabeli.
  4. Jeśli jako user mimo wszystko zrezygnujesz z dodania ogłoszenia albo zamkniesz przeglądarkę a wgrane pliki i tak pozostaną na serwerze to robisz odśmiecanie tych danych czyli odnajdujesz te wpisy w tej tymczasowej tabeli i robisz delete tych wgranych plików z określonego katalogu. Operacja może być wykonana albo CRON-em, albo losowo np. co 1 na 100 requestów, w tym rozumieniu użytkownicy przeglądają stronę, to za którymś tam razem się wykona. To chyba nie problem coś takiego zrealizować.

Odrębna sprawa to to jak zapisujesz nazwy plików które uploadujesz na serwerze, tzn. w stylu Wordpressa, czyli podkatalog rok/miesiąc/dzień albo inaczej, tu może być problem z wgrywaniem zdjęć o tej samej nazwie plików i kolizje z tym związane ale to inna sprawa. Natomiast pojawianie się ukrytych pól po wypełnieniu wcześniejszych w formularzu i przechodzenie do kolejnych części formularza, moim zdaniem bardzo uciążliwe w samym tylko jQuery.

I raczej nie licz na gotowce bo nie sądzę żeby coś takiego co Ty masz zrealizować dało się znaleźć a tu musisz wiedzieć jak podejść a gotowcami to się można co najwyżej wspomagać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1