Pracuję nad aplikacją, która umożliwia przesyłanie i przechowywanie dużych plików na serwerze WWW. Obecnie używam PHP do obsługi plików POSTed przez http. Mam zestaw php.ini z:Duże przesyłanie plików
upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 128M
max_input_time = 6000
max_execution_time = 6000
Wygląda na to, że nie ma żadnej dyrektywy apache dla LimitRequestBody. Używam APC do śledzenia postępu przesyłania plików. Z jakiegoś powodu ładowanie plików zawsze zatrzymuje się dokładnie na 50M.
Wiem, że http nie jest najskuteczniejszym rozwiązaniem do przesyłania plików, ale ta aplikacja musi być przyjazna dla użytkownika i rozumiem, że są problemy z firewallem z ftp.
Zastanawiam się, czy ktoś mógłby dać mi jakieś sugestie, co zatrzymuje pobieranie w dokładnie 50M? To musi być jakieś ustawienie konfiguracyjne.
Co więcej, jest jakiś inny sposób, w jaki powinienem rozważyć pracę przy użyciu javascript/PHP i http dla przesyłania plików. Sprawdziłem aplety java i używanie flash. Prawdopodobnie użyjemy swfuploadera, ale jeśli jest to konfiguracja serwera, która powoduje, że mój upload nie działa przez http, nie widzę, jak obejdzie to aplet java lub program do przesyłania plików flash.
Należy zauważyć, że mam nadzieję, że wymyślę rozwiązanie, które pozwoli mi przesłać bardzo duże pliki do 1 GB w pewnym momencie.
używam bardzo uproszczone PHP aby otrzymać plik
$uploaddir = '/'.$_POST['upload_directory'].'/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);
if (is_uploaded_file($_FILES['file']['tmp_name'])) {
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) { some success code; }
Jest oczywiście trochę więcej niż tylko to, ale to jest sedno tego, jak sobie radzić przesyłanie.
W jaki sposób przesyłasz pliki i co robisz z nimi po ich przesłaniu? –
Proste polecenia php is_uploaded_file() i move_uploaded_file() oraz wyciąganie plików z $ _FILES – wallacer