Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wysyłanie plików na serwer
Forum PHP.pl > Forum > Przedszkole
Testosteron
Mam taki oto kod:
  1. <html>
  2. <head>
  3. <title>Wysyłanie...</title>
  4. </head>
  5. <body>
  6. <h1>Wysyłanie pliku...</h1>
  7. <?php
  8. If ($_FILES['plikiuzytkownika']['error'] > 0)
  9. {
  10. echo 'Problem ';
  11. Switch ($_FILES['plikiuzytkownika']['error'] )
  12. {
  13. case 1: echo 'Rozmiar pliku przekroczyl wartosc upload_max_filesize'; break;
  14. case 2: echo 'Rozmiar pliku przekroczyl wartosc max_filesize'; break;
  15. case 3: echo 'Plik wyslany tylko czesciowo'; break;
  16. case 4: echo 'Nie wyslano zadnego pliku'; break;
  17. case 6: echo 'Nie znaleziono katalogu docelowego'; break;
  18. case 7: echo 'Nie zapisano pliku na dysku'; break;
  19. }
  20. }
  21.  
  22. //Czy plik ma prawidłowy typ MIME?
  23.  
  24. If($_FILES['plikuzytkownika']['type'] != 'text/plain')
  25. {
  26. echo 'Problem! Plik nie zawiera zwyklego tekstu';
  27. exit;
  28. }
  29.  
  30. //umieszczanie pliku w pożądanej lokalizacji
  31. $lokalizacja = '/wyslane/' . $_FILES['plikiuzytkownika']['name'];
  32.  
  33. if (is_uploaded_file($_FILES['plikiuzytkownika']['tmp_name']) )
  34. {
  35. if (!move_uploaded_file($_FILES['plikiuzytkownika']['tmp_name'] . $lokalizacja) )
  36. {
  37. echo 'Problem: Plik nie moze byc skopiowany do katalogu';
  38. }
  39. }
  40. else
  41. {
  42. echo 'Problem: mozliwy atak';
  43. echo $_FILES['plikiuzytkownika']['name'];
  44. }
  45. echo 'Plik wyslany<br><br>';
  46. //Ponowne sformatowanie wiadomości pliku
  47.  
  48. $wp = fopen ($lokalizacja, 'r');
  49. $zawartosc = fread ($wp, filesize($lokalizacja) );
  50. fclose($wp);
  51.  
  52. $zawartosc = strip_tags($zawartosc);
  53. $wp = fopen($lokalizacja, 'w');
  54. rwrite($wp, $zawartosc);
  55. fclose($wp);
  56. //Pokazanie co zostało wysłane
  57. echo 'Podglad zawartosci wyslanego pliku:<br><hr>';
  58. echo $zawartosc;
  59. echo '<br><hr>';
  60.  
  61. ?>
  62. </body>
  63. </html>


Cytat
Notice: Undefined index: plikuzytkownika in /home/user/Publiczny/WWW/wyslij.php on line 25 Problem! Plik nie zawiera zwyklego tekstu

O co chodzi? Przeciez zdefiniowałem "plikiuzytkownika"
krzywy36
tam jest "plikuzytkownika" a nie "plikiuzytkownika"
Testosteron
Fakt. Nie zobaczyłem. Poprawiłem błąd, ale powstał kolejny:
Cytat
Warning: move_uploaded_file() expects exactly 2 parameters, 1 given in /home/user/Publiczny/WWW/wyslij.php on line 36 Problem: Plik nie moze byc skopiowany do katalogu


Może to być kwestia uprawnień dostępu do katalogu?

Przykład skopiowany z płyty też nie działa:
Cytat
Warning: move_uploaded_file(/wyslane/a.txt): failed to open stream: No such file or directory in /home/user/Publiczny/WWW/wysylanie/wyslij.php on line 38 Warning: move_uploaded_file(): Unable to move '/tmp/phpNMAUXQ' to '/wyslane/a.txt' in /home/user/Publiczny/WWW/wysylanie/wyslij.php on line 38 Problem: Plik nie może być skopiowany do katalogu
d3ut3r
Pierwszy błąd masz dlatego że w twoim kodzie występuje:

  1. !move_uploaded_file($_FILES['plikiuzytkownika']['tmp_name'] . $lokalizacja)


czyli dajesz tylko 1 argument a funkcja potrzebuje dwóch (mała podpowiedź . to nie to samo co ,)

drugi błąd może być spowodowany niemożliwością zapisania do katalogu /wyslane/
Testosteron
Nigdy wcześniej nie używałem tej funkcji. Tak jest w książce. Poza tym są 2 argumenty. Czego brakuje? Zresztą podobna knstrukcja jest w manualu:
  1. move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src);
d3ut3r
u Ciebie jest:

  1. move_uploaded_file($_FILES['plikiuzytkownika']['tmp_name'] . $lokalizacja)


masz kropkę przed $lokalizacja zamiast wymaganego przecinka
Testosteron
Nie wiem jak to się stało, ale w oryginalnym kodzie źródłowym był przecinek.
Cytat
Warning: move_uploaded_file(/wyslane/a.txt): failed to open stream: No such file or directory in /home/user/Publiczny/WWW/wyslij.php on line 36 Warning: move_uploaded_file(): Unable to move '/tmp/phpZvresi' to '/wyslane/a.txt' in /home/user/Publiczny/WWW/wyslij.php on line 36 Problem: Plik nie moze byc skopiowany do katalogu

Komunikat taki sam jak przy kodzie z płyty.

  1. <html>
  2. <head>
  3. <title>Wysyłanie...</title>
  4. </head>
  5. <body>
  6. <h1>Wysyłanie pliku...</h1>
  7. <?php
  8. If ($_FILES['plikuzytkownika']['error'] > 0)
  9. {
  10. echo 'Problem ';
  11. Switch ($_FILES['plikuzytkownika']['error'] )
  12. {
  13. case 1: echo 'Rozmiar pliku przekroczyl wartosc upload_max_filesize'; break;
  14. case 2: echo 'Rozmiar pliku przekroczyl wartosc max_filesize'; break;
  15. case 3: echo 'Plik wyslany tylko czesciowo'; break;
  16. case 4: echo 'Nie wyslano zadnego pliku'; break;
  17. case 6: echo 'Nie znaleziono katalogu docelowego'; break;
  18. case 7: echo 'Nie zapisano pliku na dysku'; break;
  19. }
  20. }
  21.  
  22. //Czy plik ma prawidłowy typ MIME?
  23.  
  24. If($_FILES['plikuzytkownika']['type'] != 'text/plain')
  25. {
  26. echo 'Problem! Plik nie zawiera zwyklego tekstu';
  27. exit;
  28. }
  29.  
  30. //umieszczanie pliku w pożądanej lokalizacji
  31. $lokalizacja = '/wyslane/' . $_FILES['plikuzytkownika']['name'];
  32.  
  33. if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']) )
  34. {
  35. if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja));
  36. {
  37. echo 'Problem: Plik nie moze byc skopiowany do katalogu';
  38. }
  39. }
  40. else
  41. {
  42. echo 'Problem: mozliwy atak';
  43. echo $_FILES['plikuzytkownika']['name'];
  44. }
  45. echo 'Plik wyslany<br><br>';
  46. //Ponowne sformatowanie wiadomości pliku
  47.  
  48. $wp = fopen ($lokalizacja, 'r');
  49. $zawartosc = fread ($wp, filesize($lokalizacja) );
  50. fclose($wp);
  51.  
  52. $zawartosc = strip_tags($zawartosc);
  53. $wp = fopen($lokalizacja, 'w');
  54. rwrite($wp, $zawartosc);
  55. fclose($wp);
  56. //Pokazanie co zostało wysłane
  57. echo 'Podglad zawartosci wyslanego pliku:<br><hr>';
  58. echo $zawartosc;
  59. echo '<br><hr>';
  60.  
  61. ?>
  62. </body>
  63. </html>
d3ut3r
sprawdź prawa do zapisu dla katalogu wysłane ew spróbuj:

  1. $lokalizacja = 'wyslane/' . $_FILES['plikuzytkownika']['name'];


czyli bez pierwszego slasha
Testosteron
Zmieniłem chmod folderu na 777, ale efekt jest taki sam
d3ut3r
próbowałeś zmienić $lokalizacja tak jak Ci podałem ?
Testosteron
Tak. Obecnie skrypt próbuję odpalić na Linuksie. Później sprawdzę czy działa na Windowsie.

Sprawdziłem na Windowsie. Tam problem także występuje.
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.