Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ PHP nie odbiera mi plików z serwera.

Napisany przez: Asmox 24.05.2013, 14:39:37

Hej, mam problem z uploadem plików. Cały formularz wysyła się przez POST i wszystkie dane dostają się do skryptu oprócz pliku. W dodatku głupiego obrazka. Poniżej wklejam listingi mojego kodu.
products-add-n-view.phtml - formularz tworzący nowy produkt

  1. <!-- ... -->
  2. <http://december.com/html/4/element/form.html action="modyfikacja.php" enctype="multipart/form-data" method="POST">
  3. <http://december.com/html/4/element/h3.html>Dodaj nowy produkt</http://december.com/html/4/element/h3.html>
  4. <http://december.com/html/4/element/table.html>
  5. <http://december.com/html/4/element/tr.html>
  6. <http://december.com/html/4/element/td.html>nazwa</http://december.com/html/4/element/td.html>
  7. <http://december.com/html/4/element/td.html><http://december.com/html/4/element/input.html type="text" name="name"></http://december.com/html/4/element/td.html>
  8. </http://december.com/html/4/element/tr.html>
  9. <http://december.com/html/4/element/tr.html>
  10. <http://december.com/html/4/element/td.html>link</http://december.com/html/4/element/td.html>
  11. <http://december.com/html/4/element/td.html><http://december.com/html/4/element/input.html type="text" name="link"></http://december.com/html/4/element/td.html>
  12. </http://december.com/html/4/element/tr.html>
  13. <http://december.com/html/4/element/tr.html>
  14. <http://december.com/html/4/element/td.html>zdjęcie</http://december.com/html/4/element/td.html>
  15. <http://december.com/html/4/element/td.html><http://december.com/html/4/element/input.html type="file" name="plik" /></http://december.com/html/4/element/td.html>
  16. </http://december.com/html/4/element/tr.html>
  17. <http://december.com/html/4/element/tr.html>
  18. <http://december.com/html/4/element/td.html colspan="2"><http://december.com/html/4/element/input.html type="submit" value="Wyślij" /></http://december.com/html/4/element/td.html>
  19. </http://december.com/html/4/element/tr.html>
  20. </http://december.com/html/4/element/table.html>
  21. <http://december.com/html/4/element/input.html type="hidden" name="opt" value="product_new" />
  22. <http://december.com/html/4/element/input.html type="hidden" name="MAX_FILE_SIZE" value="50000" />
  23. </http://december.com/html/4/element/form.html>
  24. <!-- ... -->


modyfikacja.php - skrypt który odbiera dane i ma tworzyć nowy produkt
  1. // ...
  2. if (http://www.php.net/isset ($_POST['opt'])) {
  3. if ($_POST['opt'] == 'product_new') {
  4. http://www.php.net/echo '<br />Tworzenie nowego produktu';
  5. http://www.php.net/print_r($_POST);
  6. // przenoszenie pliku
  7. if (http://www.php.net/isset ($_POST['img'])) {
  8. http://www.php.net/echo 'jest img';
  9. http://www.php.net/print_r($_FILES);
  10. }
  11. }
  12. // ...


php.ini - fragment ustawień php
Kod
file_uploads = On
upload_tmp_dir = "C:\serwer\www\tmp"
upload_max_filesize = 2M
max_file_uploads = 20


Problem polega na tym, że php zupełnie ignoruje mi przesyłane pliki. Listowanie zmiennej $_POST ukazuje mi wszystko z formularza oprócz tego pliku. Bardzo proszę o pomoc.

Napisany przez: gothye 24.05.2013, 17:07:06

Ponieważ plik masz w tabilcy $_FILES a nie $_POST

Napisany przez: webdice 24.05.2013, 19:41:20

  1. if (http://www.php.net/isset ($_POST['img'])) {


Nigdzie w kodzie HTML nie masz zadeklarowanego pola o nazwie img. Sprawdź co wyświetla Ci samo:

  1. http://www.php.net/print_r( $_FILES );


bo odnoszę wrażenie że informacje o pliku.

Napisany przez: Asmox 25.05.2013, 11:48:07

Powiem szczerze że myślałem iż informacje o przesłanym pliku znajdują się również w tablicy $_POST. Teraz wszystko się zgadza i wydaje się proste. Bardzo dziękuję za pomoc i przepraszam za niechlujstwo w kodzie. Zmieniałem atrybut name pola file, bo wydawało mi się że wcześniej użyłem jakiejś zabronionej nazwy. Później zapomniałem zmienić przeszukiwanie w skrypcie. Mimo wszystko nic by to nie dało, bo pliki idą do zmiennej $_FILE, a w $_POST nie ma żadnej wzmianki. Temat można zamknąć.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)