Autor | Zpráva | ||
---|---|---|---|
noby Profil |
#1 · Zasláno: 21. 9. 2011, 07:54:11 · Upravil/a: noby
Dobrý den. Na internetu jsem našel návod podle kterého jsem si vytvořil ajax upload. Vše funguje jak má až na to že se upload nedokončí. Nevíte v čem je chyba? Chmod mám nastavený na 777 tudiž na právo pro zápis.
<script language="javascript" type="text/javascript"> <!-- function startUpload(){ document.getElementById('f1_upload_process').style.visibility = 'visible'; document.getElementById('f1_upload_form').style.visibility = 'hidden'; return true; } function stopUpload(success){ var result = ''; if (success == 1){ result = '<span class="msg">Soubor byl úspěšně nahrán!<\/span><br/><br/>'; } else { result = '<span class="emsg">Došlo k chybě při nahrávání souboru!<\/span><br/><br/>'; } document.getElementById('f1_upload_process').style.visibility = 'hidden'; document.getElementById('f1_upload_form').innerHTML = result + '<label>File: <input name="myfile" type="file" size="30" /><\/label><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>'; document.getElementById('f1_upload_form').style.visibility = 'visible'; return true; } //--> </script> <form action="inc/upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" > <p id="f1_upload_process">Čekejte prosím...<br><img src="images/loader.gif" /><br></p> <p id="f1_upload_form" align="center"><br> <label>File: <input name="myfile" type="file" size="30" /> </label> <label> <input type="submit" name="submitBtn" class="sbtn" value="Upload" /> </label> </p> <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe> </form> upload.php <?php // Edit upload location here $destination_path = '/../../images/photo/'; $result = 0; $target_path = $destination_path . basename( $_FILES['myfile']['name']); if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) { $result = 1; } sleep(1); ?> <script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result; ?>);</script> |
||
Časová prodleva: 3 dny
|
|||
Alphard Profil |
#2 · Zasláno: 23. 9. 2011, 20:30:14
Zkoušel jste v PHP (klidně bez ajaxu) zrušit potlačení výpisu chyb a podívat se, v čem je problém?
|
||
noby Profil |
#3 · Zasláno: 23. 9. 2011, 22:56:40
Alphard:
To jsem bohužel zatím nezkoušel, ale vím že když oddělím javascript tak upload nezačne ani provádět. Zjistil jsem to dnes když jsem zapomněl k formuláři přidat javascript, ale to je vedlejší. Hlavně teď musím dořešit ten upload. A jelikož se mi například takový obyčejný upload nelíbí tak jsem zvolil ajax upload. |
||
Alphard Profil |
#4 · Zasláno: 24. 9. 2011, 00:00:05
Tak hledejte chybu. Vypisuje něco php? js konzole? Odešle se soubor? Odešle se aspoň formulář? Zavolá se ta funkce?
Tohle všechno jde zjistit během minuty a hned víte, co opravovat. |
||
noby Profil |
#5 · Zasláno: 24. 9. 2011, 00:32:04
No vypíše mi to akorát hlášku: Došlo k chybě při nahrávání souboru!. Takže nevím kde dále je chyba
|
||
Alphard Profil |
#6 · Zasláno: 24. 9. 2011, 01:45:30
PHP vypisuje hlášky, když to někdo nezakáže. Javascript také umí zobrazovat chybové zprávy. Síťovou komunikaci lze sledovat. Já mám dobré zkušenosti např. s Firebugem. Nevím, co máte blbě, snad by to mohlo fungovat, mně to uploaduje (i když se pak nezobrazí formulář pro další soubor).
|
||
noby Profil |
#7 · Zasláno: 24. 9. 2011, 02:02:06 · Upravil/a: noby
Alphard:
Právě že tohle je celý kód. Nic víc k tomu ajax uploadu nepatří. Možná by ještě mohla být špatná cesta, ale to si nemyslím jelikož skript upload.php je složce: admin/inc a tyto tečky: /../../ vyjedou ze složky admin na root kde je složka images. Tak jsem to zkoušel u v samostatném souboru a ani tam nejde |
||
Davex Profil |
#8 · Zasláno: 24. 9. 2011, 09:11:08
"tyto tečky: /../../ vyjedou ze složky admin na root kde je složka images."
Kdepak, úvodní lomítko přepne do kořene souborového systému, kde se adresář images nenalézá - měli by to být bez něj ../../. |
||
noby Profil |
#9 · Zasláno: 24. 9. 2011, 09:30:08
Davex:
Dobře, první lomítko jsem odstranil, a stále nejde. Nejde mi ani demo. Tak mě napadlo nebude to špatně nainstalovaný ovladač k windows? |
||
Davex Profil |
#10 · Zasláno: 24. 9. 2011, 10:01:58
Tak si zapni zobrazování chyb PHP a vyzkoušej upload script samostatně bez AJAXu. Bez konkrétní chyby se nepohneme dále.
|
||
noby Profil |
#11 · Zasláno: 24. 9. 2011, 10:07:04
Davex:
Tas něco nového. To zobrazení chyb nadávám jsem se díval a jako fakt to nedám |
||
Davex Profil |
#12 · Zasláno: 24. 9. 2011, 10:20:36
Na začátek upload skriptu přidej řádky
ini_set('display_errors', 1); error_reporting(E_ALL); |
||
noby Profil |
#13 · Zasláno: 24. 9. 2011, 10:36:17
Davex:
PHP nezobrazuje vůbec žádnou chybu. |
||
Davex Profil |
#14 · Zasláno: 24. 9. 2011, 10:51:27
Ještě smaž ten zavináč před
move_uploaded_file() .
|
||
noby Profil |
#15 · Zasláno: 24. 9. 2011, 11:02:42 · Upravil/a: noby
Davex:
Pořád mi to píše: Došlo k chybě při nahrávání souboru! a to i když odstraním z formuláře onsubmit="startUpload();" A zde je upravený script: <?php ini_set('display_errors', 1); error_reporting(E_ALL); // Edit upload location here $destination_path = '../../images/photo/'; $result = 0; $target_path = $destination_path . basename( $_FILES['myfile']['name']); if(move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) { $result = 1; } sleep(1); ?> <script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result; ?>);</script> |
||
Alphard Profil |
#16 · Zasláno: 24. 9. 2011, 11:07:58
noby:
Vy určitě pořád posíláte formulář do toho skrytého iframe, že ano? |
||
noby Profil |
#17 · Zasláno: 24. 9. 2011, 11:11:32
Alphard:
Tak to nevím, ale dělal jsem to podle tohoto návodu, kde ten skrytý iframe také je. |
||
Davex Profil |
#18 · Zasláno: 24. 9. 2011, 11:12:03
S Alphardem jsme psali, abys to vyzkoušel bez JavaScriptu, tzn. z formuláře odeber atributy target a onsubmit.
<form action="inc/upload.php" method="post" enctype="multipart/form-data"> |
||
noby Profil |
#19 · Zasláno: 24. 9. 2011, 11:18:57
Davex:
I tak jsem měl pravdu nevypisuje to žádnou chybu. Nevím si s tím už rady. A vzdávat to taky nechci. |
||
Davex Profil |
#20 · Zasláno: 24. 9. 2011, 12:41:02
Je možné, že je na tvém hostingu zakázána funkce
ini_set() a zobrazování chyb se zapíná jinak. Zkus pohledat v administraci nebo nápovědě.
Nebo je zkus zapnout konfigurací v souboru .htaccess podle zapnutí chybových hlášek. |
||
noby Profil |
#21 · Zasláno: 24. 9. 2011, 16:40:52
Davex:
Ani zobrazování chyb pomoci .htaccess nezobrazí žádnou chybu |
||
noby Profil |
#22 · Zasláno: 26. 9. 2011, 15:57:00
Mám snad chybu v pc? Jelikož to známym také funguje i na mém webu
|
||
Michel Profil |
#23 · Zasláno: 26. 9. 2011, 16:17:31
noby:
Může to být i v prohlížeči. Např u Coppermine galerie mi hromadné nahrávání nefunguje ve FF, ale v IE funguje zcela normálně. Ale nevím čím to je. |
||
noby Profil |
#24 · Zasláno: 26. 9. 2011, 16:30:31
Zkoušel jsem to i v Google Chrome kde to známemu funguje, ale mi to v Google Chrome taky nefunguje. Jinak používám IE 9
|
||
noby Profil |
#25 · Zasláno: 28. 9. 2011, 18:56:39
Takže čím může být že mi nefunguje Ajax Upload?
|
||
Davex Profil |
#26 · Zasláno: 28. 9. 2011, 19:25:54 · Upravil/a: Davex
Pokud ti nejde upload nikam, tak to není tímto skriptem, ale něčím v počítači (např. virem, antivirem, firewallem) nebo někde po cestě - možná routerem nebo skvrnami na slunci. Třeba takové AVG se někdy ke skriptům na stránkách chová dost drsně.
|
||
noby Profil |
#27 · Zasláno: 28. 9. 2011, 23:08:50
Davex:
Mám avast na pc i na notebooku mám Windows 7 na pc i notebooku. Rozdíl je v tom, že na notebooku jde, ale na stolním PC ne. Virus nemám jelikož jsem PC testoval antivírem. |
||
Davex Profil |
#28 · Zasláno: 28. 9. 2011, 23:21:44
Takže máš rozbitý stolní PC a to tady nevyřešíme. Vlastně to ani nesouvisí s PHP.
|
||
noby Profil |
#29 · Zasláno: 29. 9. 2011, 14:04:42
Davex:
Já vím, že to sem nepatří. Nevíte co bych tak mohl mít rozbitého na stolním PC? To by přece nefungoval žádný jiný upload. Jenže mě jiné uploady od ajax fungují. |
||
Časová prodleva: 13 let
|
0