• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Formularz nie wysyla plikow na server.

Object Storage Arubacloud
0 głosów
701 wizyt
pytanie zadane 30 września 2015 w PHP przez Jednoreki Bandyta Nowicjusz (170 p.)
zamknięte 1 października 2015 przez event15

Witam,

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
  <input type="hidden" name="MAX_FILE_SIZE" value="150768" />
  <input type="file" name="img"  />
  <input type="submit" value="Send" />
</form>

<?php

  echo var_dump($_FILES['img']);

?>

Kod powyzej utworzy zmienna globalna $_FILES. Moge z niej wyodrebnic tymczasowy folder, w ktorym zapisany powinien byc moj plik.

$_FILES['img']['tmp_name']

Ale gdy udam sie do tego folderu (w moim przypadku jest to /opt/lampp/temp/ ... poniewaz uzywam linuxa, serwer XAMPP zainstalowany z domyslnymi ustawieniami) nie ma tam zadnego pliku ktory powinien byc przeslany.

Nie widze rozwiazania, nie wiem dlaczego formularz nie przesyla pliku do tego tymczasowego katalogu i nie wiem dlaczego w zmiennej :

$_FILES['img']['tmp_name']

jest sciezka do tymczasowego katalogu, tak jakby ten plik jednak zostal tam przeslany.

Moze ktos mi pomoze?

 

Pozdrawiam, JB

komentarz zamknięcia: problem rozwiązany

2 odpowiedzi

+1 głos
odpowiedź 30 września 2015 przez efiku Szeryf (75,160 p.)
wybrane 30 września 2015 przez Jednoreki Bandyta
 
Najlepsza
Hmm strzelam ze pliki tymczasowe siedza w /tmp ?  

a pozniej tylko move_uploaded_file
komentarz 30 września 2015 przez Jednoreki Bandyta Nowicjusz (170 p.)
Gdy wyslesz taki formularz, zostaje stworzona zmienna globalna $_FILES ktora jest tablica i z tej tablicy pobierasz adres foldera tymczasowego w ktorym powinien znalezc sie przesylany plik. I to umiem zrobic, czyli ktory to folder tymczasowy i gdzie on sie znajduje.

Problem polega na tym ze tego pliku tam nie ma... i rozkladam rece bo tablica $_FILES nie zwraca zadnego bledu, podaje adres do folderu tymczasowego, a pliku tam nie ma...
komentarz 30 września 2015 przez efiku Szeryf (75,160 p.)

Ja wiem jak działa tablica $_FILES, ps: ona istnieje nawet bez przesłania formularza.

Musisz zrozumieć zasadę działania php. 

Masz Request i Response. 

---------------START ---------------------

Request - > po wyslaniu formularza trafia to jako request do skryptu wraz z danymi np plikiem jpg.

Obsługujesz request  ( przenosząc plik tymczasowy do wlasciwego miejsca ) robisz jakies fajne bajerowe obliczenia

Zwracasz Response - > np przeslano plik, za duzy plik itd.

----------  KONIEC -------------------

Tyle żyją twoje dane , rozumiesz już?

komentarz 30 września 2015 przez efiku Szeryf (75,160 p.)
<form enctype="multipart/form-data" action="<?= $_SERVER['PHP_SELF'] ?>" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="150768"/>
    <input type="file" name="img"/>
    <input type="submit" value="Send"/>
</form>

<?php

var_dump($_FILES);

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (file_exists($_FILES["img"]["tmp_name"])) {
        echo "PLIK ISTNIEJE TYLKO DO CZASU AZ NIE ZWROCE CI RESPONSE" . PHP_EOL;
    }
    move_uploaded_file($_FILES["img"]["tmp_name"], "./" . $_FILES["img"]["name"]);
    echo "|  PRZESLANO PLIK";
}

?>

 

komentarz 30 września 2015 przez efiku Szeryf (75,160 p.)
komentarz 30 września 2015 przez Jednoreki Bandyta Nowicjusz (170 p.)

Czuje sie skolowany :)

z tego co piszesz rozumiem tyle ze plik, np obrazek, ktory chce wyslac formularzem na serwer, znajduje sie w katalogu tymczasowym, wskazanym w zmiennej $_FILES tylko przez czas zycia skryptu? dlatego gdy potem ide do tego folderu nie widze tego pliku bo on zostal skasowany?

ale to chyba tak nie dziala, przerabiam w tej chwili ksiazke Head First PHP i MySQL i tam jest wrecz napisane ze wcale nie trzeba przenosic plikow z katalogu tymczasowego aby moc z nich korzystac. oczywiscie to jest zla praktyka z wielu powodow, ale nie o to chodzi. chodzi o to ze te pliki powinny tam byc, dluzej niz przez czas zycia skryptu.

kod ktory podales generuje mi takie ostrzezenia:

Warning: move_uploaded_file(/bandyta.jpg): failed to open stream: Permission denied in /opt/lampp/htdocs/test/index.php on line 15

Warning: move_uploaded_file(): Unable to move '/opt/lampp/temp/phpI3BP0W' to '/bandyta.jpg' in /opt/lampp/htdocs/test/index.php on line 15

komentarz 30 września 2015 przez efiku Szeryf (75,160 p.)
edycja 30 września 2015 przez efiku

Nazwa katalogu przecież sama mówi za siebie, "Katalog tymczasowy" .

Tak dokładnie przez czas życia skryptu. Pociesze Cię, odpaliłem sobie watcher na linuxie na katalog /tmp , w momencie gdy prześlę plik , tworzy się on, ale gdy skrypt zwroci response znika.  Przeanalizuj dokładnie to co Ci napisałem jak działa php, posiedź trochę nad linkiem do docsow Symfony, aby zrozumieć zasadę działania protokołu HTTP. Zrozumienie tego bardzo ułatwi Ci pracę.

Nie rozumiem dlaczego chcesz kombinować i koniecznie korzystać z tego pliku w /tmp. 

Zwróć uwagę, że książka ma już 5 lat. a wersja php pod którą była pisana to pewnie 5.3.

 

Co do błędu.

Po prostu praw nie masz w /opt/lampp/htdocs/test/ lub  /opt/lampp/temp/ 

komentarz 30 września 2015 przez Jednoreki Bandyta Nowicjusz (170 p.)
zrobilem testy na drugim kompie z windowsem i wszystko dziala, tzn. plik zostal przeniesiony z katalogu tymczasowego do wybranego przezemnie.

jest takze tak jak powiedziales, w katalogu tymczasowym nie moglem zobaczyc tego pliku, czyli musial zostac skasowany zaraz po tym jak skrypt zakonczyl prace.

czyli moja ksiazka jest naprawde stara :)

a pod linuksem skrypt mi nie dziala z powodu praw dostepu do katalogow.

siedzialem nad tym (zeby nie powiedziec zmarnowalem) pol dnia :)

dzieki wielkie za pomoc, pozdrawiam, JB
komentarz 30 września 2015 przez efiku Szeryf (75,160 p.)
To po piwko, co? ^^

Rownież pozdrawiam.
komentarz 30 września 2015 przez writen Nałogowiec (29,060 p.)

jest wrecz napisane ze wcale nie trzeba przenosic plikow z katalogu tymczasowego aby moc z nich korzystac

Chodzi o to, że możesz wykonywać na takim pliku jakieś operacje, np. za pomocą biblioteki graficznej, zanim go zapiszesz w docelowym miejscu.

0 głosów
odpowiedź 30 września 2015 przez writen Nałogowiec (29,060 p.)
Nigdy się nie zastanawiałem jak to jest. Plik musi być chyba od razu usuwany po zakończeniu działania skryptu.

Podobne pytania

0 głosów
1 odpowiedź 173 wizyt
pytanie zadane 3 października 2018 w PHP przez JeyJey Użytkownik (710 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 14 września 2018 w PHP przez progNewbie Obywatel (1,130 p.)
0 głosów
1 odpowiedź 115 wizyt
pytanie zadane 11 września 2018 w PHP przez progNewbie Obywatel (1,130 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...