Pobieranie nazwy zdjęcia (z formularza) podczas przesyłania na serwer

0

Witam. Jestem w trakcie próby wysłania zdjęcia na serwer. Zdjęcie pobieram z pola type="file" z formularza typu POST. Oto kod:

<form  method="post" style="text-align:left;" enctype="multipart/form-data">
	<input type="file" name="okladka"/>
	<input name="dalej" type="submit" value="KOLEJNY KROK"/>
</form>

if(isset($_POST['dalej']))
{
	sprawdz_bledy();
	sprawdz_typ();
	zapisz_plik();
	header('location:dodaj_kurs2.php');
}

function zapisz_plik()
	{
	  $lokalizacja = 'media/images/okladki/'.$_FILES['okladka'].'.png';
		
	  if(is_uploaded_file($_FILES['okladka']['tmp_name']))
	  {
	    if(!move_uploaded_file($_FILES['okladka']['tmp_name'], $lokalizacja))
	    {
	      echo 'problem: Nie udało się skopiować pliku do katalogu.';
	        return false;  
	    }
	  }
	  else
	  {
	    echo 'problem: Możliwy atak podczas przesyłania pliku.';
		echo 'Plik nie został zapisany.';
	    return false;
	  }
	  echo 'udalo sie';
	  return true;
	}

Po załączeniu zdjęcia i kliknięciu w odpowiedni button zdjęcie rzeczywiście wysyła się na serwer. Problem tkwi w tym, że zawsze jego nazwa to "Array.png". W ogóle nie pobiera nazwy wskazanego zdjęcia. Tak samo jest nawet gdy zakomentuję funkcję wysyłającą i chcę wypisać poprzez: echo $_FILES['okladka'], to też wyświetla "Array".

Co ważne: od momentu gdy do formularza dopisałem kod pozwalający na wysyłanie na serwer, a w szczególności : enctype="multipart/form-data"
walidacja mojego formularza wyrzuca mi komunikat, że nie wybrano żadnego pliku (długość stringa==0). Dlatego aby wrzucić plik na serwer (z nazwą "array") muszę zakomentować tą walidację.

1

Wartością zwracaną przez $_FILES['okladka'] jest tablica. http://php.net/manual/en/features.file-upload.post-method.php

0

A co w takim razie robię źle, że nie pobiera mi nazwy pliku tylko wypisuje "array"

1

Wplatasz całą tablicę do ciągu znaków, zamiast konkretny element tej tablicy.

0

Czy podzielicie się wiedzą jak odwołać się do tego elementu zamiast tablicy?

1

$_FILES['okladka']['name'] zwróci "oryginalną" nazwę . Żeby wyciągnąć z niej samą nazwę musisz posłużyć się funkcją basename albo pathinfo. Przykłady użycia znajdziesz podlinkowanej dokumentacji.

0

Dzięki :) poprzerabiałem troszkę i działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1