mar 18
Obsługa upload plików
Oto kawałek kodu który obsługuje upload plików.
Kod html formularza jest bardzo prosty:
<form action="upload.php" enctype="multipart/form-data" method="post"> <input name="plik_upload" type="file" /> <input type="submit" value="Upload" /> </form>
a tak może wyglądać plik upload.php
Jest tu użyta funkcja polskawe opisana we wcześniejszym poście Jak zmienić polskie znaki na polskawe?. Linijka w której jest przypisywana wartość do zmiennej $uploadfile ustala nazwę pliku po wgraniu na serwer oraz dodaje ścieżkę bezwzględną do niego. Stała APPLICATION_PATH musi byś wcześniej zdefiniowana. Przykład ten dopuszcza tylko upload plików zawierających grafikę ale można to zmodyfikować w linii if(!ereg…
Na końcu tego fragmentu kodu zmienna $komunikat będzie pusta jeśli nie było żadnego uploadu lub będzie zawierała komunikat o efekcie operacji.
$komunikat = '';
if(isset ($_FILES['plik_upload'])) {
$file = $_FILES['plik_upload'];
$uploadfile = APPLICATION_PATH.'/upload/'.date('U').'_'.str_replace(array('!','@','#','$','%','^','&','*','(',')','+','~','`',',','"',"'",'< ','>','?','=',';'.':','[',']','{','}','|'), '', str_replace(array(' ','-'), '_', strtolower(polskawe($file['name']))));
if(!ereg('image', $file['type'])) {
$komunikat = 'Przesyłany plik nie jest grafiką.';
} elseif($file['error'] != UPLOAD_ERR_OK) {
switch ($file['error']) {
case UPLOAD_ERR_INI_SIZE:
$komunikat = 'Za duży plik.';
case UPLOAD_ERR_FORM_SIZE:
$komunikat = 'Za duży plik.';
case UPLOAD_ERR_PARTIAL:
$komunikat = 'Przesłany plik był tylko częściowo przesłane.';
case UPLOAD_ERR_NO_FILE:
$komunikat = 'Żaden plik nie został przesłany.';
case UPLOAD_ERR_NO_TMP_DIR:
$komunikat = 'Nie może utworzyć tymczasowego katalogu dla pliku.';
case UPLOAD_ERR_CANT_WRITE:
$komunikat = 'Nie można zapisać pliku na dysku serwera.';
case UPLOAD_ERR_EXTENSION:
$komunikat = 'Przesyłanie pliku przerwane.';
default:
$komunikat = 'Nieznany błąd';
}
}elseif (move_uploaded_file($file['tmp_name'], $uploadfile)) {
chmod($uploadfile, 0666);
$komunikat = 'Plik został załadowany';
} else {
$komunikat = 'Błąd ładowania pliku';
}
}

