ugrás a tartalomhoz

jQuery Ajax FormData() feltöltése xhr-rel.

alto1332 · 2013. Feb. 11. (H), 20.06
Feladat: 1 db fájl feltöltése FormData()-ként úgy, hogy közben kijelezze a feltöltés pillanatnyi értékét. MySQL táblában az adatok lementése: a feltöltő neve, a feltöltött *.zip/*.rar fájl tartalma, a fájl neve.

Eddig jutottam: http://users.atw.hu/bujocska/

A javascript részt megtaláljátok a honlapon.

Probléma: amikor én próbálok feltölteni egy fájlt, mindig sikerül, viszont ha más, neki megáll 100%-nál és nem történik semmi: nem rak be új rekordot a táblába, nem tölti fel a fájlt a szerverre. Fogalmam sincs miért van ez, esetleg a fájl neve miatt.

Fájl/mappa szerkezet (design elemeket leszámítva):
- /index.php
- /jsHandler.php
- js/script.js
- js/jquery-ui-1.9.2.custom.min.js
- /uploads (mappa - chmod 777)
- /tmp (az atw.hu miatt kell - chmod 777)
  1. <?php  
  2.   
  3. ob_start();  
  4.   
  5. $mysql["connection"]=mysql_connect("host","felhasználónév","jelszó"or die("Hiba a MySQL szerverhez való kapcsolódás közben. Hibaüzenet: ".mysql_error());  
  6. $mysql["selection"]=mysql_select_db("db"or die("Hiba a MySQL adatbázis kiválasztása közben. Hibaüzenet: ".mysql_error());  
  7.       
  8. foreach($_POST as $k=>$v)  
  9.     $_POST[$k]=mysql_real_escape_string($v);  
  10.   
  11. $_FILES["upload_file"]["name"]=preg_replace("/[^a-zA-Z0-9\.]/","_",mysql_real_escape_string($_FILES["upload_file"]["name"]));  
  12.   
  13. $maxsize=104857600; //100 MB  
  14. $minsize=5242880; //5 MB  
  15.   
  16.   
  17. if($_FILES["upload_file"]["error"]==4){  
  18.     if(isset($_GET["nojs"]))header("Location:index.php?result=0"); //hibák szeparálása az index.php-ben, semmi különös. Arra az esetre ha a felhasználó javascript nélkül böngészné az oldalt  
  19. }elseif(strlen($_POST["name"])<3){  
  20.     if(isset($_GET["nojs"]))header("Location:index.php?result=1");  
  21. }elseif(strlen($_POST["name"])>30){  
  22.     if(isset($_GET["nojs"]))header("Location:index.php?result=2");  
  23. }elseif(strlen($_POST["maps"])<10){  
  24.     if(isset($_GET["nojs"]))header("Location:index.php?result=3");  
  25. }elseif(strlen($_POST["maps"])>255){  
  26.     if(isset($_GET["nojs"]))header("Location:index.php?result=4");  
  27. }elseif($_FILES["upload_file"]["size"]>=$maxsize){  
  28.     if(isset($_GET["nojs"]))header("Location:index.php?result=5");  
  29. }elseif($_FILES["upload_file"]["size"]<=$minsize){  
  30.     if(isset($_GET["nojs"]))header("Location:index.php?result=6");  
  31. }elseif((strtolower(pathinfo($_FILES["upload_file"]["name"],PATHINFO_EXTENSION))!="zip") && (strtolower(pathinfo($_FILES["upload_file"]["name"],PATHINFO_EXTENSION))!="rar")){  
  32.     if(isset($_GET["nojs"]))header("Location:index.php?result=7");  
  33. }elseif(move_uploaded_file($_FILES["upload_file"]["tmp_name"],"uploads/".$_FILES["upload_file"]["name"])){  
  34.     $dbquery=mysql_query("INSERT INTO uploads (name,maps,fileName,timestamp) VALUES ('$_POST[name]','$_POST[maps]','".$_FILES["upload_file"]["name"]."','".time()."')"or die(mysql_error());  
  35.     if(isset($_GET["nojs"]))header("Location:index.php?result=8");  
  36.     echo 8; //visszatérési érték a script.js "success:" részéhez  
  37. }else{  
  38.     if(isset($_GET["nojs"]))header("Location:index.php?result=9");  
  39.     echo 9;  
  40. }  
  41.   
  42. ?>  
Előre is köszönöm a segítséget.
 
1

Opera (12.12) alatt nem megy

Hidvégi Gábor · 2013. Feb. 11. (H), 20.22
  • Opera (12.12) alatt nem megy a tallózás, a gombra kattintva nem történik semmi.
  • Firefox 18 alatt nincs hiba a feltöltésnél.
  • Ha hiba történik (mert valaki kisebb, nagyobb fájlt választott), rakhatnál egy linket vissza a feltöltéshez.
  • A teszt idejére csökkenthetnéd a fájlméretet.
  • Ahol nem sikerült, mekkora fájlt próbált feltölteni? Sokat segítene, ha elküldené neked, és te is megnéznéd ugyanazzal, elképzelhető, hogy hibás a zip, és amiatt akad ki a php.
  • Lehet, hogy az ATW nem enged meg egy bizonyosnál nagyobb fájlméretet feltölteni.
  • Ha túl nagy a feltöltött fájl, elfogyhat a PHP számára rendelkezésre álló memória.
2

Köszönöm

alto1332 · 2013. Feb. 13. (Sze), 16.05
Heló, köszönöm a választ és a segítséget. A feltöltés gomb megjavítva, a css-sel volt a gond. Utánanéztem fórumokon és az ATW lekorlátozta a feltöltést 8 MB-ra, szóval most itthoni szerveren futtatom a honlapot déltől éjfélig és minden működik.

http://bujocska.tk