Kod jak poniżej a dalsze informacje pod nim...

  1. <?php
  2. class pliki
  3. {
  4. /*$_FILES['plik']['name']
  5. $_FILES['plik']['type']
  6. $_FILES['plik']['size']
  7. $_FILES['plik']['tmp_name']
  8. $_FILES['plik']['error']*/
  9.  
  10. function kopiuj_plik($sciezka)
  11. {
  12. if(!$_FILES['plik']['error'])
  13. {
  14. $pelna_sciezka = $sciezka . basename($_FILES['plik']['name']);
  15.  
  16. if(is_uploaded_file($_FILES['plik']['tmp_name']))
  17. {
  18. if(move_uploaded_file($_FILES['plik']['tmp_name'], $pelna_sciezka))
  19. {
  20. if(file_exists($pelna_sciezka))
  21. {
  22. echo "okokokok";
  23. }
  24. else
  25. {
  26. echo "nie ok3";
  27. }
  28. }
  29. else
  30. {
  31. echo "nie ok2";
  32. }
  33. }
  34. else
  35. {
  36. echo "nie ok1";
  37. }
  38. }
  39. else
  40. {
  41. switch($_FILES['plik']['error'])
  42. {
  43. case 1: 
  44. echo "blad1";
  45.  break;
  46. case 2: 
  47. echo "blad2";
  48.  break;
  49. case 3: 
  50. echo "blad3";
  51.  break;
  52. case 4: 
  53. echo "blad4";
  54.  break;
  55. case 5: 
  56. echo "blad5";
  57.  break;
  58. case 6: 
  59. echo "blad6";
  60.  break;
  61. case 7: 
  62. echo "blad7";
  63.  break;
  64.  
  65. default:
  66.  echo "bladX";
  67. }
  68. }
  69. }
  70. }
  71.  
  72. $zdjecie = new pliki;
  73.  
  74. if(!empty($_FILES['plik']['name']))
  75. {
  76. $zdjecie -> kopiuj_plik("./");
  77. }
  78.  
  79. echo "<form enctype="multipart/form-data" action="./index.php" method="POST">
  80. <input type="hidden" name="MAX_FILE_SIZE" value="300000" />
  81. Wybierz plik: <input name="plik" type="file" />
  82. <input type="submit" value="Dodaj plik" /></form>";
  83.  
  84. ?>


Prosty skrypt do przesyłania plików na serwer.

Problem jest następujący. I wcześniej sie pomylilem bo wystepuje on nie tylko w firefoxie ale takze w internet explorerze

1. Wybieram plik do przesłania (plik nowy - którego nigdy wczesniej nie przesyłałem).
2. Skrypt przebiega prawidłowo funkcje is_uploaded_file() i move_uploaded_file() nie zwracają błędu.
3. Błąd zwraca ostatnia funkcja file_exists() która teoretycznie poprawnie przesłanego pliku nie
znajduje na serwerze.
4. Jeśli po powyzszym błędzie klikne na "odświerz" i ponownie wysle dane z formularza (jakiś plik) to plik ten zostaje porawnie dodany. Bez żadnych błędów!.

I tak sie dzieje z każdym kolejnym plikiem którego wcześniej nie przesyłałem.

Natomiast jeśli skasuje z serwera któryś z wcześniej wysłanych za pomocą tego skrypty plików i wyśle go ponownie plik ten dodaje się za pierwszym razem. Bez konieczności odświeżania strony.

Dlaczego?

Jeszcze coś dodam. Zauwazylem ze dzieje sie tak tylko u mnie na localhoście czyli windows xp 64bit + php 4.3.3 + apache 2