В форме надо обязательно указать атрибут enctype="multipart/form-data"
, иначе файлы не будут передаваться через форму. Также можно указать элемент формы с именем MAX_FILE_SIZE
(обязательно перед элементом формы загрузки файла), где указывается допустимый размер загрузки файла. В первую очередь данный элемент нужен для того, чтобы сразу предупредить посетителя о превышении размера файла, не дожидаясь, пока сам файл не загрузится. Файл загружается через функцию move_uploaded_file()
.
<form enctype="multipart/form-data" action method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">
<input name="userfile" type="file">
<input type="submit" value="Send File">
</form>
<?php
if (isset($_FILES['userfile'])) {
// Папка для загрузки файлов
$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/uploads/';
// Загрузка файла
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir.$_FILES['userfile']['name'])) {
echo '<p>Файл успешно загружен</p>';
}
}
?>
Если файл не загружается, надо убедиться, что установлены правильные права на папку, куда загружаются файлы (в системе Linux).
<?php
if ($_FILES['filename']['size'] > 3*1024*1024) {
echo 'Файл больше 3 Мб!'; exit;
}
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {
$newname = './upload/'.$_FILES['filename']['name'];
move_uploaded_file($_FILES['filename']['tmp_name'], $newname);
echo 'Файл загружен: '.
'<a href="'.$newname.'" target="_blank">ссылка</a>';
}
else {
echo 'Ошибка загрузки файла!'; exit;
}
echo '<br><a href="index.html">Назад</a>';
?>
<form action method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit" value="Загрузить">
</form>