пятница, 21 апреля 2017 г.

Загрузка файлов. Перемещение загруженных файлов

При перемещении файлов нам нужно знать:
1) какой файл мы хотим переместить:
 $tmp_file = $_FILES['file_upload']['tmp_name'];
$target_file = basename($_FILES['file_upload']['name']);

basename - дает только имя файла, которое в конце.

2) куда мы хотим его поместить: $upload_dir = "uploads"

3) переместим загруженный файл:
move_uploaded_file($tmp_file, $upload_dir."/".$target_file);

Перемещает только те файлы, которые были загружены и находятся во временной директории.


<?php
// определим массив ошибок загрузки. Это константы.
$upload_errors = array(
UPLOAD_ERR_OK => "No errors", // это не ошибка, означает, что ошибки нет.
UPLOAD_ERR_INI_SIZE => "Larger than upload_max_filesize.", // размер загружки превышает то, что было указано в php.ini
UPLOAD_ERR_FORM_SIZE => "Largen than MAX_FILE_SIZE", // максимальный размер файла в форме слишком большой
UPLOAD_ERR_PARTIAL => "Partial upload.", // загрузка произошла частично, т.е не завершилась
UPLOAD_ERR_NO_FILE => "No file.", // файл вообще не был отправлен
UPLOAD_ERR_NO_TMP_DIR => "No temporary directory.", // нет временной директории
UPLOAD_ERR_CANT_WRITE => "Can't write to disk.", // нельзя записать на диск, т.е есть проблемы с разрешениями на чтение и запись
UPLOAD_ERR_EXTENSION => "File upload stopped by extension.", // расширение остановило загрузку файла
);


if(isset($_POST['submit'])) {
// перемещение файла
$tmp_file = $_FILES['file_upload']['tmp_name']; // временный файл

// basename — Возвращает последний компонент имени из указанного пути
// basename дает только имя_файла.расширеие
// basename защищает от хаков, делает эскейпинг
$target_file = basename($_FILES['file_upload']['name']); 

$upload_dir = "uploads"; // имя директории, в которую будет помещаться файл

// переместим загруженный файл
if(move_uploaded_file($tmp_file, $upload_dir."/".$target_file)) {
$message = "File uploaded successfully.";
} else {
$error = $_FILES['file_upload']['error'];
$message = $upload_errors[$error];

}
}



/*
echo "<pre>";
print_r($_FILES['file_upload']);
echo "</pre>";
echo "<hr />";
*/
?>

<html>
<head>
<title>Upload</title>
</head>
<body>
<?php if(!empty($message)) { echo "<p>{$message}</p>"; }?>
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/> <!-- Размер примерно 1 МБ -->
<input type="file" name="file_upload" />
<input type="submit" name="submit" value="Upload"/>
</form>
</body>
</html>

Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html