Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesyłanie dużych plików (ok200MB)
Forum PHP.pl > Forum > Przedszkole
Dave
Witam

Mam następujący problem. Otóż potrzebuje zrobić swego rodzaju panel klienta do przesyłania dużych plików graficznych (nawet do 200-300MB). Użytkownicy będą przesyłać swoje pliki poprzez formularz na stronie internetowej, następnie chciałbym aby pliki te powędrowały na serwer FTP do odpowiedniego katalogu. Powodem dla którego nie chce po prostu podać loginu i hasła do FTP klientowi jest między innymi to że stronka będzie też zbierać różne informacje dodatkowe odłącznie przesyłanego pliku (materiał druku, rozdzielczość itp.).

Problemem moim jest przesyłanie dużych plików i w związku z tym mam kilka pytań:
- Jak zrobić aby pliki wędrowały prosto na serwer FTP bez mieszania w to serwera WWW. Domyślnie Apache przyjmuje pliki o wielkości bodajże 2MB co można zwiększyć w ustawieniach, ale 200-300MB to chyba już będzie za dużo.
- Czy da się przesyłając plik przez FTP , zdobyć jakieś informacje o tym pliku aby móc zapisać je w bazie danych. Np. rozmiar ,typ,rozdzielczość.

Jeśli ktoś ma doświadczenia z dużymi plikami, bardzo proszę o radę. Jeśli ktoś ma inne pomysły na zrealizowanie w/w założeń, jestem otwarty na propozycje.

Pozdrawiam
Wieviór
Możesz dać dostęp do FTP i stworzyć skrypt, który będziesz powiedzmy sobie odpalał wtedy, kiedy będziesz potrzebował i on będzie zbierał informacje o pliku.

Pliki graficzne 300 MB? Billboardy tworzysz? biggrin.gif
wipo
Możesz też stworzyć sobie klienta FTP przy pomocy php .
Wtedy tworzysz klientowi hasło dostępowe a nie dajesz danych do konta.
Klient nie widzi zawartości katalogu ale może coś tam wrzucić.

Wykonałem coś takiego i mogę Ci to sprzedać
Dave
Oprócz samego pliku potrzebne mi są jeszcze informacje dodatkowe tj. kto wysłał dany plik, na jakim materiale ma być wydrukowany i w jakiej rozdzielczości druku, na kiedy ma być zrobiony itp. Dlatego moim pierwszym pomysłem był formularz zbierający te wszystkie dane. Niestety zbyt duże wielkości plików sieją spustoszenie na Apachu i nie bardzo wiem jak to rozwiązać.

php potrafi komunikować sie z serwerem FTP, ale to chyba też sie nie uda ponieważ przesyłając duży plik formularzem wydaje mi się że plik wędruje najpierw na serwer WWW a potem jest wysyłany na FTPa, więc problem ograniczeń Apacha pozostaje.

Cytat(Wieviór @ 30.09.2006, 12:14:05 ) *
Możesz dać dostęp do FTP i stworzyć skrypt, który będziesz powiedzmy sobie odpalał wtedy, kiedy będziesz potrzebował i on będzie zbierał informacje o pliku.


Ciekawy pomysł. Jednak w ten sposób nie zbiorę infromacji o tym na jakim materiale ma byc wydruk itp. Jeśli wszystko inne zawiedzie wykorzystam Twój pomysł. Wielkie dzięki.

Cytat
Możesz też stworzyć sobie klienta FTP przy pomocy php .
Wtedy tworzysz klientowi hasło dostępowe a nie dajesz danych do konta.
Klient nie widzi zawartości katalogu ale może coś tam wrzucić.


Czy taki klient nie ma problemów z wysyłaniem dużych plików przez formularze ? Mógłbyś napisać więcej o tym rozwiązaniu ? Z góry dzięki.

Pozdrawiam
Dave
wipo
Osoba wysyłająca Ci plik może dołączyć drugi plik np opis gdzie wszystko umieści
Wieviór
Zwróć uwagę na serwisy typu yousendit.com czy inne takie - one to jakoś rozwiązują, więc przesyłanie formularzem dużych plików musi być możliwe. Pytanie tylko na czym to polega. Jesteś pewien, że nie można normalnie przez "file" wysyłać dużych plików?
ARJ
Cytat(Wieviór @ 30.09.2006, 18:00:10 ) *
Jesteś pewien, że nie można normalnie przez "file" wysyłać dużych plików?

teoretycznie można, tylko trzeba mieć dostęp do php.ini.
należy tam zmienić wpisy:
Kod
upload_max_filesize = 2M
max_execution_time = 30

//i możliwe, że ten też
memory_limit = 8M

wiadomo, trzeba zwiększyć maksymalną możliwą do przyjęcia wielkość pliku. koniecznością jest też zwiększenie dozwolonego czasu wykonywania się skryptu - w tym wypadku na bardzo dużo( 30 minut?! ).
chyba wygodniej będzie użyć FTP.
wipo
Czas wykonywania pliku można zmienić w skrypcie
set_time_limit

Co do wielkości pliku przesyłanego przez $_FILES to już musisz gadać z adminem czemu masz za mało
erix
Cytat
Możesz dać dostęp do FTP i stworzyć skrypt, który będziesz powiedzmy sobie odpalał wtedy, kiedy będziesz potrzebował i on będzie zbierał informacje o pliku.

Ale tak, czy siak musisz wysłać plik na serwer z php, bo co będziesz uploadować na FTP? Serwer, co obsługuje strone może tego nie wytrzymać...
Dave
Na razie zwiększyłem limity w Apachu na swoim kompie. Dzięki za wskazówki. Działa to nawet nie najgorzej w sieci lokalnej, ale pewnie już tak ładnie nie będzie przez Internet. Wszystko wyjdzie w testach, które mam zamiar niedługo zrobić.

W projekcie użyłem także wbudowanej biblioteki GD do tworzenia miniaturek obrazków, ale przy plikach graficznych wielkości np 70MB mój komputer zmulił się tak że trzeba go było reanimować winksmiley.jpg Stworze ograniczenia dla dużych plików i będzie po sprawie. Miniaturki nie są aż tak ważne.

Zakładając że takie rozwiązanie będzie działać, wygląda na to że problem jest rozwiązany, ale musze przyznać że chciałoby się czegoś więcej. Jakiś progress bar na przykład. Czekanie 20 min na wysłanie pliku bez jakiegokolwiek statusu postępu może być irytujące dla klientów.

Spotkałem się ostatnio z ciekawym pomysłem, aby zrobić taką aplikację w Javie. Mam już na swoim koncie parę większych projektów, więc powinienem sobie poradzić. Czy ma ktoś jakieś doświadczenie w tej sprawie ? Tzn. czy wymagane będzie podpisywanie certyfikatów aby móc cokolwiek wysłać itp. Chodzi o to żeby cała procedura była prosta, aby nawet niedoświadczony klient mógł sobie poradzić.
Czy gra jest warta świeczki ? winksmiley.jpg

Z góry dziękuje że wszelkie sugestie.
erix
Jakiś upload napisany w Javie jest dołączony do net2ftp, ale chyba tylko do celów niekomercyjnych.
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.