Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z upload jeszcze raz
Forum PHP.pl > Forum > PHP
senor_d
witam

wiem ze ten temat byl juz poruszany nie raz ale przejrzalem wszystko co znalazlem na forum, pl.php.net, artykuly na www.php.pl i nic nie pomaga. Jest prosty, bez kombinacji.

  1. <?php
  2. $dir = 'dir/';
  3. $file = $dir . $_FILES['plik']['name'];
  4.  
  5.  
  6. if (is_uploaded_file($_FILES['plik']['tmp_name'])) { 
  7.  
  8. if (move_uploaded_file($_FILES['plik']['tmp_name'],$_FILES['plik']['name'])) {
  9.  print "Plik został zapisany na serwerze";
  10. } else {
  11.  print "Błąd przenoszenia pliku!";
  12. }
  13.  
  14. } else {
  15. print "Błąd zapisywania pliku!";
  16. }
  17. ?>


  1. <form action="?a=file" method="post" enctype="multipart/form-data">
  2.  
  3. <input type="hidden" name="MAX_FILE_SIZE" value="10000"/>
  4.  
  5. <input type="file" name="plik" /><input type="submit" value="Dodaj" />
  6.  
  7. </form>


Nie jest to tez wina atrybutow chyba bo folder 'dir' jest na 777. Nie wiem czy to wina skryptu bo sprobowalem tez i tego z http://www.php.pl/artykuly/dla_poczatkujacych/upload_plikow i on tez nie dziala. W kazdym razie kod wywala sie na is_uploaded_file() i zwraca "Błąd zapisywania pliku!". Z gory dzieki
ave
Cytat
bool move_uploaded_file ( string nazwa_pliku, string przeznaczenie )


  1. <?php
  2.  if (move_uploaded_file($_FILES['plik']['tmp_name'],$file)) {
  3. ?>
senor_d
spoko, dzieki, tu masz racje. ale skrypt dalej nie dziala. wykonanie kodu nie dochodzi do tego miejsca ktore poprawiles. jesli zwraca "Błąd zapisywania pliku!" to znaczy ze problem jest przy is_uploaded_file().

Cytat
bool is_uploaded_file ( string nazwa_pliku )


i zgodnie z przykladem na pl.php.net warunek
  1. <?php
  2. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  3. ?>

jest poprawny.
Michasko
Cytat(senor_d @ 2006-03-15 15:35:36)
$dir = 'dir/';

Nie wiem...może sie myle smile.gif
Ale wydaje mi sie, że to powinna być ścieżka do katalogu docelowego tongue.gif
senor_d
no ale to przeciez jest sciezka do katalogu docelowego. po prostu w tym przypadku katalog docelowy nazywa sie 'dir'. to przeciez nie ma znaczenia jak katalog sie bedzie nazywal. moze byc i 'gitara'. probowalem tez
Cytat
$dir = '/dir/';  $dir = 'dir';

ale nie ma roznicy.
nospor
@senor_d tak to jest, jak ktoś przeczyta połowicznie temat i doszukuje sie problemow nie tam gdzie trzeba... za takie cos to pouszach mozna oberwac smile.gif

a ty to sprawdzasz po wyslaniu formularza? Bo w kodzie widzę, ze formularz jest wysylany do tego samego skryptu, czyli ze moze sprawdzane to jest przed wyslaniem?
A jesli nie to wyswietl:
  1. <?php
  2. echo $_FILES['plik']['tmp_name'];
  3. ?>
jest tam to co powinno?
A najlepiej daj tak:
  1. <?php
  2. print_r($_FILES);
  3. ?>
senor_d
sprawdzalem wczesniej print_r($_FILES); ale zapomnialem o tym napisac sadsmiley02.gif. w kazdym razie
  1. <?php
  2. print_r($_FILES);
  3. ?>

zwraca
Cytat
Array ( [plik] => Array ( [name] => 1.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) )

a
  1. <?php
  2. echo $_FILES['plik']['tmp_name'];
  3. ?>

nic nie zwraca
nospor
no i nie mozna tak bylo od razu? winksmiley.jpg
blad otrzymujesz, a konkretnie numer 2. patrzysz wiec tu:
http://pl.php.net/manual/pl/features.file-upload.errors.php
i co widzisz? ze plik przekroczyl dopuszczalny rozmiar... smile.gif 10KB u Ciebie
senor_d
dzieki nospor. wielkie dzieki smile.gif. teraz jest 'git'ara guitar.gif smile.gif
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.