Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ajax + php $_FILES zwraca śmieci
Forum PHP.pl > Forum > XML, AJAX
Wielebny.pl
Czy ktoś mógłby mi wytłumaczyć dlaczego ajax nie może podać dokładnych danych do PHP $_FILES? tablica plików zawraca mi dokładnie wartość "Array ( ) [" dla echo($_FILES['userfile']['tmp_name']); i innych rekordów? Dane do php wysyłam user_file.files[0] czyli chyba cały plik ale to nic nie daje nic sad.gif
jak to przystosować aby działało ?


AJAX:
  1. function upload_user_file()
  2. {
  3. //div.innerHTML
  4. var div = document.getElementById("warstwaDanych");
  5. var user_file = document.getElementById('plik');
  6. var odpowiedz = "";
  7. XMLHttpRequestObject = new getXMLHttpRequestObject();
  8.  
  9. if(XMLHttpRequestObject)
  10. {
  11. div.innerHTML = message_box("Wysyłam plik ...","bigbox","blue");
  12. XMLHttpRequestObject.open("POST", "./upload_file/funkcje_dla_ajax.php");
  13. //XMLHttpRequestObject.open("POST", "./funkcje_dla_ajax.php");
  14. XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  15. XMLHttpRequestObject.onreadystatechange = function()
  16. {
  17. if (XMLHttpRequestObject.readyState == 4 )
  18. {
  19. if(XMLHttpRequestObject.status == 200)
  20. {
  21. odpowiedz = XMLHttpRequestObject.responseText;
  22. // odpowiedz = unescape(odpowiedz);
  23. //return odpowiedz;
  24. div.innerHTML = odpowiedz;
  25. XMLHttpRequestObject = null;
  26. }
  27. }
  28. }
  29. var wartosc = 'wartosc=UPLOAD_FILE' + '&userfile=' + user_file.files[0] + '&filename=' + user_file.files[0].name;
  30. //wysylka = escape(wysylka);
  31. XMLHttpRequestObject.send(wartosc);
  32.  
  33. }
  34.  
  35.  
  36.  
  37. }
  38.  
  39. function getXMLHttpRequestObject()
  40. {
  41. try{
  42. return new XMLHttpRequest();
  43. }
  44. catch(e){
  45. try{
  46. return new ActiveXObject("Microsoft.XMLHTTP");
  47. }
  48. catch(e){
  49. return false;
  50. }
  51. }
  52. }


PHP:
  1. <?php
  2. include_once(realpath('../funkcja.php'));
  3.  
  4.  
  5. switch((count($_POST) ? $_POST['wartosc'] : false))
  6.  
  7. {
  8.  
  9.  
  10. case'UPLOAD_FILE':
  11. {
  12.  
  13. upload_user_file();
  14.  
  15. break;
  16. }
  17. case'MESSAGE_BOX':
  18. {
  19. if (isset($_POST['tresc']) && isset($_POST['box']) && isset($_POST['color']))
  20. {
  21. message_box($_POST['tresc'],$_POST['box'],$_POST['color']);
  22.  
  23. }
  24. break;
  25. }
  26.  
  27.  
  28. case NULL:
  29. {
  30. echo '<z>Narazie tu nic nie ma</z>';
  31. ;break;
  32. }
  33.  
  34. }
  35.  
  36.  
  37. function upload_user_file()
  38. {
  39. //echo ('<center style="font-size:28">Wysyłanie pliku. Proszę czekać.<br><br></center>');
  40.  
  41.  
  42. print_r($_FILES);
  43. $_FILES['userfile']=$_POST['userfile'];
  44. $file_name=$_POST['filename'];
  45.  
  46.  
  47. if ($_FILES['userfile']['error']>0)
  48. {//if
  49. message_box('Plik nie może być wysłany !<br>','bigbox','red');
  50. switch ($_FILES['userfile']['error'])
  51. {
  52. case 1:echo message_box('Rozmiar pliku przekroczył wartość graniczną upload_max_file_size!','box','red'); break;
  53. case 2:echo message_box('Rozmiar pliku przekroczył wartość graniczną max_file_size!','box','red'); break;
  54. case 3:echo message_box('Plik wysłany tylko częściowo.','box','red'); break;
  55. case 4:echo message_box('Nie wysłano pliku.','box','red'); break;
  56. }
  57. //exit;
  58. }//if
  59. //umieszanie pliku w katalogu
  60.  
  61. /*if ($_FILES['userfile']['size'] > pobierz_z_admin_panel('UPLOAD_SIZE')) - SIZE tez zwraca śmieci
  62. {
  63. message_box('Rozmiar pliku przekroczył wartość graniczną !','box','red');
  64. }
  65.  
  66. else */{
  67. $tmp_id = pobierz_user_id($_SESSION["user_loged"]);
  68.  
  69. $lokalizacja = realpath('./Files/'.$tmp_id.'/'.$file_name);//$_FILES['userfile']['name'];
  70. echo($_FILES['userfile']['tmp_name']); <-to zwraca śmieci :(
  71. if (is_uploaded_file($_FILES['userfile']['tmp_name']))
  72. {//if
  73. if (!move_uploaded_file($_FILES['userfile']['tmp_name'],$lokalizacja))
  74. {//if
  75. echo message_box('Plik został wysłany ale jest problem z zapisem na dysku !','box','red');
  76. //exit;
  77. }//if
  78. else
  79. message_box('Plik wysłany poprawnie !<br>','bigbox','green');
  80. }//if
  81. else
  82. {//else
  83. message_box('Wystąpił problem z wysyłaniem !<br>','bigbox','red');
  84. }//else
  85.  
  86. //message_box('Plik wysłany poprawnie !<br>','bigbox','green');
  87. }
  88. }
  89.  
  90. ?>
Quantum
AJAX-em w normalny sposób pliku nie wyślesz, są na to tricki z użyciem ramek, np: http://www.openjs.com/articles/ajax/ajax_file_upload/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.