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

Problem z wysłaniem obrazka w PHP

Object Storage Arubacloud
0 głosów
230 wizyt
pytanie zadane 13 grudnia 2016 w PHP przez ThePatrykOOO Dyskutant (8,400 p.)

Witam, piszę bo chcę w końcu zrobić ten upload obrazka na serwer. To co znajdę w internecie nie działa. Tak wygląda mój kod: 

// form
<form enctype="multipart/form-data" action="php/upload-img.php" method="post" >
  Zdjęcie:
        <input type="hidden" name="MAX_FILE_SIZE" value="1024000" >
         <input type="file" name="obrazek" >
  <input type="submit" value="Dodaj zdjęcie">
  </form>

I tak wygląda tablica gdy przesyłam img:

Array
(
    [obrazek] => Array
        (
            [name] => pods01.png
            [type] => 
            [tmp_name] => 
            [error] => 2
            [size] => 0
        )

)

Jeżeli ktoś rozwiąże ten problem będę bardzo wdzięczny.

2 odpowiedzi

0 głosów
odpowiedź 13 grudnia 2016 przez radek024 Szeryf (77,160 p.)

Ostatnio w bardzo przyjazny sposób opowiedział to typek na tym filmie: https://www.youtube.com/watch?v=JaRq73y5MJk Ogółem polecam całą serię, to co jest błędnie bardzo często jest tłumaczone poprzez adnotacje, więc warto je włączyć :)

komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
no dobra robię zgodnie z tutorialem i wraz moja tablica wygląda tak samo jak powyżej w opisie.
komentarz 14 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)

No dobra przerobiłem ten odcinek i wraz mi kod nie działa ): 

<?php
   if(isset($_POST['submit'])){
      $file = $_FILES['image'];
      echo "<pre>";
      print_r($file);
      echo "</pre>";

      $fileName = $_FILES['file']['name'];
      $fileTmpName = $_FILES['file']['Tmp_name'];
      $fileError = $_FILES['file']['error'];
      $fileSize = $_FILES['file']['size'];
      $fileType = $_FILES['file']['type'];

      $fileExt = explode('.', $fileName);
      $fileActualExt = strtolower(end($fileExt));

      $allowed = array('jpg','jpeg','png','pdf');

      if (in_array($fileActualExt, $allowed)) {
         if ($fileError === 0) {
            if ($fileSize < 100000) {
               $fileNameNew = uniqid('',true).".".$fileActualExt;

               $fileDestionation = "../image/IMG".$fileNameNew;
               move_uploaded_file($fileTmpName, $fileDestionation);


            } else {
               echo "Plik jest za duży!";
            }
         } else {
            echo "Nie udało się przesłać pliku";
         }
      }else {
         echo "Nie udało się wysłać pilku tego typu.";
      }


   }
?>

Niestety 1 if się nie spełnia i skrypt szlak trafia. A nie dam za wygraną

0 głosów
odpowiedź 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

A nie zauważyłeś przypadkiem, że error jest inny niż 0 co oznacza jakiś błąd?

[error] => 2

Z taką wskazówką idziemy sobie do manuala i czytamy:

UPLOAD_ERR_FORM_SIZE

Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.

http://php.net/manual/en/features.file-upload.errors.php

I problem mamy rozwiązany i nie musimy prosić innych o pomoc ;) 

komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
czyli jak powinno być prawidłowo napisane. bo już się w tym gubię
komentarz 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Ale że co? Podałem Ci przecież błąd, który mówi wyraźnie, że przesyłany plik ma większy rozmiar niż ustawiony maksymalny w formularzu w HTML. Kod jest dobry.
komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
Dałem value="5000000" teraz mam taki błąd Value 1.

UPLOAD_ERR_INI_SIZE

Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

Czyli mam coś zmieniać w pliku php.ini
komentarz 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Zgadza się, nie możesz pliku o takiej wielkości jakiej próbujesz przesłać ze względu na ograniczenie maksymalnej wielkości uploadowanego pliku z php.ini.
komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
czyli gdzie powinienem to poprawić, w pilku php.ini?
komentarz 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Dokładnie tak, jeśli chcesz zmienić to ustawienie to należy szukać w pliku php.ini.
komentarz 13 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)
nie wiem gdzie szukać, nie chcę nic zmieniać sam bo zaraz całego xamppa zepsuje pomożesz gdzie, powinienem to zmienić?
komentarz 13 grudnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
Niestety ja też nie wiem, nie korzystam z XAMPPa.

Wyszukałem coś takiego: http://stackoverflow.com/a/6185364/6489188 a po znalezieniu pliku php.ini po prostu odszukaj upload_max_filesize i zmień.
komentarz 14 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)

Czemu czasami mam error 1 czasami 0. Wtf o co tutaj chodzi. Zrobiłem ten odcinek co jest wyżej i mam coś takiego: 

No dobra przerobiłem ten odcinek i wraz mi kod nie działa ): 

<?php
   if(isset($_POST['submit'])){
      $file = $_FILES['image'];
      echo "<pre>";
      print_r($file);
      echo "</pre>";

      $fileName = $_FILES['file']['name'];
      $fileTmpName = $_FILES['file']['Tmp_name'];
      $fileError = $_FILES['file']['error'];
      $fileSize = $_FILES['file']['size'];
      $fileType = $_FILES['file']['type'];

      $fileExt = explode('.', $fileName);
      $fileActualExt = strtolower(end($fileExt));

      $allowed = array('jpg','jpeg','png','pdf');

      if (in_array($fileActualExt, $allowed)) {
         if ($fileError === 0) {
            if ($fileSize < 100000) {
               $fileNameNew = uniqid('',true).".".$fileActualExt;

               $fileDestionation = "../image/IMG".$fileNameNew;
               move_uploaded_file($fileTmpName, $fileDestionation);


            } else {
               echo "Plik jest za duży!";
            }
         } else {
            echo "Nie udało się przesłać pliku";
         }
      }else {
         echo "Nie udało się wysłać pilku tego typu.";
      }


   }
?>

Niestety 1 if się nie spełnia i skrypt szlak trafia. A nie dam za wygraną

komentarz 14 grudnia 2016 przez ThePatrykOOO Dyskutant (8,400 p.)

Czemu czasami mam error 1 czasami 0. Wtf o co tutaj chodzi. No i jeszcze bym zapomniał o Undefined index: file in który zawsze działa :(

Zrobiłem ten odcinek co jest wyżej i mam coś takiego: 

No dobra przerobiłem ten odcinek i wraz mi kod nie działa ): 

<?php
   if(isset($_POST['submit'])){
      $file = $_FILES['image'];
      echo "<pre>";
      print_r($file);
      echo "</pre>";

      $fileName = $_FILES['file']['name'];
      $fileTmpName = $_FILES['file']['Tmp_name'];
      $fileError = $_FILES['file']['error'];
      $fileSize = $_FILES['file']['size'];
      $fileType = $_FILES['file']['type'];

      $fileExt = explode('.', $fileName);
      $fileActualExt = strtolower(end($fileExt));

      $allowed = array('jpg','jpeg','png','pdf');

      if (in_array($fileActualExt, $allowed)) {
         if ($fileError === 0) {
            if ($fileSize < 100000) {
               $fileNameNew = uniqid('',true).".".$fileActualExt;

               $fileDestionation = "../image/IMG".$fileNameNew;
               move_uploaded_file($fileTmpName, $fileDestionation);


            } else {
               echo "Plik jest za duży!";
            }
         } else {
            echo "Nie udało się przesłać pliku";
         }
      }else {
         echo "Nie udało się wysłać pilku tego typu.";
      }


   }
?>

Niestety 1 if się nie spełnia i skrypt szlak trafia. A nie dam za wygraną

Podobne pytania

0 głosów
1 odpowiedź 306 wizyt
pytanie zadane 27 października 2016 w PHP przez Captivity Obywatel (1,030 p.)
0 głosów
2 odpowiedzi 203 wizyt
pytanie zadane 20 lutego 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
1 odpowiedź 163 wizyt
pytanie zadane 15 września 2016 w PHP przez MaciekM Użytkownik (990 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...