Autor | Zpráva | ||
---|---|---|---|
Ostřa Profil |
#1 · Zasláno: 18. 11. 2010, 16:15:33
Dobrý den,
mám na stránkách skript pro nahrávání *.zip archivů a jejich rozbalování na serveru. <?php if (isset($_POST['odeslano'])){ $conn_id = ftp_connect("www.alternativateam.cz"); $login_result = ftp_login($conn_id,"alternativateam.cz","******"); $ret = ftp_put($conn_id, "./web/photogallery/file.zip", $_FILES["foto"]["tmp_name"], FTP_BINARY); $_POST['galname'] = strtr($_POST['galname'], "áčďéěíňóřšťúůýž ÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ","acdeeinorstuuyz_acdeeinorstuuyz"); $dir = "web/photogallery/".$_POST['galname']; if (ftp_mkdir($conn_id, $dir)) { echo "Úspěšně vytvořena složka\n";} else { echo "Složka nebyla vytvořena, vyskytl se problém";} ftp_chmod($conn_id, 0777, "web/photogallery/".$_POST['galname']); ftp_close($conn_id); function unzip($file, $target, $mask = "[.]*") { if(!file_exists($file)) { return false; } $zip = zip_open($file); if (!$zip) { return false; } else { unset($file); while ($zip_entry = zip_read($zip)) { $file['name'] = zip_entry_name($zip_entry); if(eregi($mask,$file['name'])) { $file['size'] = zip_entry_filesize($zip_entry); if(zip_entry_open($zip, $zip_entry, r)) {$buf = zip_entry_read($zip_entry, $file['size']); $tar = fopen($target.$file['name'], "w+"); fwrite($tar, $buf); fclose($tar); unset($buf); unset($tar); zip_entry_close($zip_entry); } } } zip_close($zip); } return true; } unzip("photogallery/file.zip", "photogallery/".$_POST['galname']."/"); }?> Tady je formulář: <form method="POST" enctype="multipart/form-data" class="news_form"> <input type="text" name="galname"><br> <input type="file" name="foto"><br> <input type="hidden" name="odeslano" value="1"> <input type="submit" value="Odeslat"> </form> Při malé velikosti archivu všechno jede bez problémů, jakmile se velikost zvýší (už při 9MB), stránka asi 30 sekund odesílá požadavek, pak se zobrazí prázdný formulář, soubor není nahraný, žádné chybové hlášky. Maximální velikost souboru při FTP uploadu by měla být omezena na 48828.125 kB (net2ftp píše: # The maximum size of one file is restricted by net2ftp to 48828.125 kB and by PHP to 256M # The maximum execution time is 1000 seconds) Nevíte, čím to je? Předem díky za všechny odpovědi. |
||
AM_ Profil |
#2 · Zasláno: 19. 11. 2010, 14:54:40
Ostřa:
„stránka asi 30 sekund odesílá požadavek“ to je celkem normální uploadovat 30 sekund 9MB. „Maximální velikost souboru při FTP uploadu by měla být omezena na 48828.125 kB“ důležité je omezení PHP, nejdřív se musí soubor uploadovat přes HTTP a pak ho uploaduješ svým skriptem přes FTP (což nevím, proč děláš, normálně ho přesunout do složky kam patří je o něco jednodušší, než připojovat se na localhost přes FTP). že to nevypíše ani žádnou chybu se dost divím, zřejmě máš vypnuté PHP chybové hlášky (zapni je), přinejmenším by se PHP mělo zlobit, že $_FILES['foto']['tmp_name'] neexistuje. chyba uploadu se skrývá v $_FILES['foto']['error'], viz http://cz.php.net/manual/en/features.file-upload.errors.php |
||
Ostřa Profil |
#3 · Zasláno: 19. 11. 2010, 17:45:55
AM:
„to je celkem normální uploadovat 30 sekund 9MB“ Ano, to je. Na to jsem si ale nestěžoval. „normálně ho přesunout do složky kam patří je o něco jednodušší, než připojovat se na localhost přes FTP“ Aha, na stránce, ze které jsem čerpal se psalo, že velikost není omezená. Tím se všechno mění, je nějaký způsob, jak můžu na FTP dostat větší datový objem (v tomto případě fotogalerii)? Jinak díky moc. |
||
AM_ Profil |
#4 · Zasláno: 20. 11. 2010, 12:21:56
Ostřa:
a) zvětšit limit pro upload souboru b) použít aplikaci, která umí nahrávat velké množství souborů, aniž by narážela na limit uploadu (prostě po jednom automaticky na server odesílá celou složku) - jednu napsanou v c# mám, levně prodám c) pokud i jednotlivé soubory překračují limit HTTP uploadu (256M), tak aplikaci, která umí obejít i toto (za drobnou přirážku to dopíšu a prodám :) ) možná se ti na to povede i něco rozumného vygooglit. |
||
Časová prodleva: 13 let
|
0