webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Upload plików

autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23

szukaj: upload upload upload plików upload plików wgrywanie plików na serwer wgrywanie plików na serwer PHP PHP

Upload plików za pomocą PHP jest dość prostą operacją, ale potrafi sprawić dużo kłopotów początkującym programistą. Spróbuję w jasny sposób przedstawić to zagadnienie.

Stwórzmy plik form.php, gdzie będzie się znajdował nasz formularz przez który będą wysyłane pliki na serwer.

[...]
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" /> /* maksymalna wielkość pliku w bajtach */
Plik do wysłania: <input name="userfile" type="file" />
<input type="submit" value="Wyślij" />
</form>
[...]

Atrybut action odpowiada za lokalizację pliku do którego mają zostać wysłane dane na temat pliku. W naszym przypadku jest to plik w tym samym folderze - upload.php, do którego wprowadzamy kod:

<?php

$location = 'c:/usr/krasnal/www/upload/' . basename($_FILES['userfile']['name']);

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $location)) {
   echo "Plik został załadowany poprawnie...";
} else {
   echo "Plik nie został załadowany...";
}

?>

Funckja move_uploaded_file(), przenosi plik z jednej lokalizacji ($_FILES['userfile']['tmp_name']) do drugiej ($adres) sprawdzając przy tym czy przenoszony plik został upload'owany przez formularz. W przeciwnym wypadku zwraca false.

Może teraz trochę na temat zmiennych $_FILES, jak można się domyśleć dotyczą one upload-owanych plików i tak:

Przystańmy na chwilę przy zmiennej $location, zawiera ona adres do którego ma zostać przeniesiony plik oraz jego nazwę. W naszym przypadku nazwa pliku jest pobierana ze zmiennej $_FILES['userfile'][ name'], przy pomocy funkcji basename(), która 'ucina' adres pliku i pozostawia samą nazwę. Bardzo często w tym miejscu jest popełniany błąd podczas ustalania lokalizacji dla pliku. Warto skorzystać z funkcji $_SERVER['SCRIPT_FILENAME'], która poinformuje o aktualnej lokalizacji skryptu i wprowadzić do zmiennej adres bezwzględny.

Na koniec chcę wspomnieć o częstym przeoczeniu ustalenia praw dostępu dla folderu do którego dopisuje się pliki - chmod, który ma mieć wartość 777.

Mateusz Bogolubow

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org