Autor Zpráva
Ostřa
Profil
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0