| Autor | Zpráva | ||
|---|---|---|---|
| platebni_kalendar Profil |
#1 · Zasláno: 25. 6. 2010, 17:03:17 · Upravil/a: platebni_kalendar
Zdravím, mám problém s uploadem souborů, projevuje se jen pokud se "větší" soubor pokouším nahrávat já, u ostatních jsem zatím problém nezaznamenal, ale obávám se situace, kdy se stejný problém vyskytne u někoho jiného a nebudu mít k dispozici žádnou odpověď ani řešení. Možná to tak úplně nepatří sem, ale .... jsem z toho mírně řečeno zoufalej. Googlit nepomohlo. :(
Na začátek nějaká fakta: Kód zpracovávající odesílaná data
function Create(){
global $link,$page;
if(empty($_POST['name'])): $this->error = true; $this->errorMsg .= 'Není zadané <strong>jméno fotografie</strong>.<br />'; endif;
if(empty($_POST['scale-type'])): $_POST['scale-type'] = $this->self['scaleDefault']['type']; endif;
if(empty($_POST['scale-num'])): $_POST['scale-num'] = $this->self['scaleDefault']['num']; endif;
if(empty($_FILES)): $this->error = true; $this->errorMsg .= 'Není vybraná žádná <strong>fotografie</strong>.<br />'; endif;
if($_FILES['file']['size'] > $this->upload_max_b): $this->error = true; $this->errorMsg .= 'Soubor převyšuje maximální serverem povolenou velikost.<br />'; endif;
switch($_FILES['file']['error']):
case 1: $this->error = true; $this->errorMsg .= 'Soubor převyšuje maximální povolenou velikost v <u><strong>"PHP.ini"</strong></u>.<br />'; break;
case 2: $this->error = true; $this->errorMsg .= 'Soubor převyšuje maximální povolenou velikost ve <u><strong>formuláři</strong></u>.<br />'; break;
case 3: $this->error = true; $this->errorMsg .= 'Soubor byl <strong>nahrán jen částečne</strong>. Opakujte prosím akci.<br />'; break;
case 4: $this->error = true; $this->errorMsg .= 'Není vybraná žádná <strong>fotografie</strong>.<br />'; break;
case 6: $this->error = true; $this->errorMsg .= 'Není nastavena žádná <strong>dočasná složka</strong>.<br />'; break;
case 7: $this->error = true; $this->errorMsg .= 'Soubor se nepodařilo <strong>uložit na disk</strong>.<br />'; break;
case 8: $this->error = true; $this->errorMsg .= 'Některé z rozšíření PHP způsobilo <strong>přerušení nahrávání souboru</strong>.<br />'; break;
endswitch;
if(!in_array($_FILES['file']['type'],$this->validFiles)): $this->error = true; $this->errorMsg .= 'Soubor je nepovoleného typu.<br />'; endif;
if(!$this->error):
$this->file = $_FILES;
require_once('../class/class.upload.php');
$up = new UploadFile;
$this->fileHref = $up->ReplaceChars($this->file['file']['name']);
// kontrola jestli soubor již existuje
if(file_exists(ADMIN_OFFSET.FOTO_FOLDER.'/'.$this->fileHref)): $this->error = true; $this->errorMsg .= 'Soubor s tímto jménem na určeném místě již existuje.<br />'; endif;
$up->upload = $up->Upload($this->file['file']['tmp_name'],ADMIN_OFFSET.FOTO_FOLDER.'/'.$this->fileHref);
if(!$up->upload): $this->error = true; $this->errorMsg .= 'Soubor se nepodařilo nahrát na server. Zkuste to prosím znovu později.<br />'; endif;
endif;
if(!$this->error):
$this->name = $_POST['name']; $this->category = $_POST['category']; $this->scale = $_POST['scale-type'].':'.$_POST['scale-num'];
$this->id = time();
$link->query = "INSERT INTO `".$this->self['table']."` (`id`,`href`,`scale`,`name`,`category`) VALUES ('".$this->id."','".$this->fileHref."','".$this->scale."','".$this->name."','".$this->category."')";
$this->result = $link->Sql();
if(!$this->result):
$this->error = true; $this->errorMsg = 'Přidání fotografie do systému se nezdařilo. Zkuste to prosím znovu později.<br />';
else:
$this->fine = true; $this->fineMsg = 'Fotografie byla úspěšně přidána do systému.<br />';
endif;
endif;
if($this->error):
$page->Initialize('?foo=fotogalerie/pridat/');
endif;
}Formulář <form enctype='multipart/form-data' action='http://object/admin/fotogalerie/prehled/' method='post'> <fieldset> <legend>Přidání fotografie</legend> <table> <tfoot> <tr class='submit'> <td> <input type='hidden' name='nova-fotografie' value='1' /> <input type='submit' value='Přidat' /> </td> </tr> </tfoot> <tbody> <tr> <td class='label'> <label>Název fotografie</label></td> <td> <input class='big' type='text' name='name' value='' /></td> </tr> <tr> <td class='label'> <label>Kategorie fotografie</label></td> <td> <select name='category'><option value="0">Bez kategorie</option>/n<option value='19'>Kategorie 1</option> <option value='20'>Kategorie 2</option> </select></td> </tr> <tr> <td class='label'> <label>Max velikost:</label></td> <td> <select name='scale-type'> <option value='w'>Šířka</option> <option value='h'>Výška</option> </select> <input class='small' type='text' name='scale-num' value='' /> </td> </tr> <tr> <td class='label'> <label>Vyberte fotografii<br /></label></td> <td> <input type='file' name='file' /><br /> <span class='info'>Maximílní velikost souboru<br /><strong>8 MB</strong></span></td> </tr> </tbody> </table> </fieldset> </form> Výpis $_FILES a nastavení serveru Array ( [file] => Array ( [name] => foto3.jpg [type] => [tmp_name] => [error] => 3 [size] => 0 ) ) upload_max_filesize = 20 post_max_size = 20 memory_limit = 128 max_input_time = 60 max_execution_time = 60 Popis problému Pri nahrávání souboru na server proběhne vše v pořádku, když je soubor menší než cca 50kB až 80kB. Když nahrávám soubor větší než 80kB a více výsledkem je dlouhá doba čekání, a nakonec prd z toho, viz. výpis $_FILES. Na LOCALHOSTu je to bezproblémové a známý mi testoval upload obrázků 2MB a 9MB, oba v pohodě nahrál. Netuším, kde by mohl být problém. Zkoušel jsem různé prohlížeče, nouzový režim bez jakýchkoliv addonů v prohlížeči, mám k dispozici PC a notebook (na stejné síti a na stejném připojení), u obou stejný problém. Zkoušel jsem i různé file_upload scripty co se válej na netu ke stažení, pořád ten samý problém. Nemůžu kvůli tomu testovat podobné věci jinde než na lokále, a co když bude mít někdo podobný problém. Upload mám cca 40kbit/s (já vím, žádná výhra), nicméně nesetkal jste se někdo s podobným problémem? Nějaké řešení? |
||
| Davex Profil |
#2 · Zasláno: 25. 6. 2010, 17:15:02
Zapni si zobrazování chybových hlášek pomocí
error_reporting(E_ALL), jestli PHP nezahlásí překročení časového limitu nebo nějakou jinou chybu.
|
||
| platebni_kalendar Profil |
#3 · Zasláno: 25. 6. 2010, 17:23:45
No, právě že nezahlásí vůbec nic. Nejvíc mě děsí ta hranice 70kB OK 80kB už ne .... Kdy při 70kB souboru je odezva okamžitá a u 80kB čekám na vypršení limitů aby server odpověděl....
|
||
| Davex Profil |
#4 · Zasláno: 25. 6. 2010, 17:52:56
Máš problém pouze se svým webem na konkrétním hostingu nebo je to obecný problém i s jinými službami? Když skript nahraješ na nějaký freehosting, tak je to lepší?
|
||
| platebni_kalendar Profil |
#5 · Zasláno: 25. 6. 2010, 18:05:41
Mám problém s uploadem souborů přes webové rozhraní poslední dobou všeobecně (dříve jsem tenhle problém nezaznamenal). Zkoušel jsem i imageshack.us, taky problém. Ten samý script na různém hostingu, problém. Jakýkoliv jiný script na jakémkoliv hostingu, problém. Ale upload jiný než přes webové rozhraní beží OK FTP (filezilla, total commander, aptana, .. tohle vše OK) Jsem tak ze 75% přesvědčen, že problém se týká konkrétně mě, jen .... nevím v čem je a co na to vlastně může mít vliv. Kdyby byl problém s internet providerem, asi by nebyl problém s uploadem jen přes webové rozhraní, navíc jsem na wifi a na AP určitě nejsem sám kdo používá podobné věci jako je upload souborů přes web.rozhraní. Problém v prohlížeči jsem vyloučil, když byl problém stejný v Opeře, Safari, Google Chrome, FF nouzový i normální režim ....
|
||
| Davex Profil |
#6 · Zasláno: 25. 6. 2010, 18:33:14
Pokud to dělá na více počítačích, tak bych problém hledal v tvém internetovém připojení - v WiFi klientovi/routeru nebo to může selektivně omezovat ISP (nebo mají někde chybu). Skriptem to na 99,9 % nebude.
|
||
| platebni_kalendar Profil |
#7 · Zasláno: 26. 6. 2010, 11:49:09
Zkusim po tom ještě nějak jít, odzkoušet a zavolat na ISP.. Díky za ochotu.
|
||
| AM_ Profil |
#8 · Zasláno: 26. 6. 2010, 12:10:36
http://www.php.net/manual/en/features.file-upload.errors.php
chyba 3 je UPLOAD_ERR_PARTIAL - soubor nahrán pouze částečně. Můžeš o tom něco zkusit vygooglit; také to může být nekvalitním/nestabilním internetovým připojením. |
||
|
Časová prodleva: 16 let
|
|||
0