- Подробности
-
Категория: PHP. Файлы
Один из частых вопросов, это как через форму положить файл на сервер. Делается это весьма легко, всего около 10 строк кода и php скрипт готов. И при этом ничего
кроме php вам не понадобится.
Для начала сразу оговорюсь, этот пример будет работать только в php версии 4.0.3 и выше. Получается это из за использования двух новых функций
move_uploaded_file() и is_uploaded_file(). Но поверьте, оно этого стоит, а php все таки желательно обновлять.
Итак сам код php скрипта выглядит следующим образом:
<?php
/* Куда сохраняем файлы */
$store_dir='c:/temp/upload/';
/* Если нам не передали файл, то покажем форму */
if (!$user_file) {
?>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="user_file"><input type="submit">
</form>
<?php
}
/* Если передали файл */
else {
/* Проверим все ли правильно */
if (is_uploaded_file($user_file)) {
/* Переместим файл */
move_uploaded_file($user_file, $store_dir.$user_file_name);
/* Скажем об этом */
print "Спасибо за файл <br>n";
}
/* Если не правильно */
else {
print "Не корректные данные <br> n";
}
}
?>
Рассмотрим кто и что у нас тут значит:
$user_file — эта переменная (имя берется из формы) содержит путь к временному файлу который мы закачиваем на сервер. Путем приставки к этой переменной
суффиксов _name, _size, _type мы можем получить и другую дополнительную информацию. Например:
$user_file_name — оригинальное имя файла.
$user_file_size — размер файла в байтах.
$user_file_type — mime тип файла, например "image/gif".
is_uploaded_file() — функция возвращает true или false и используется для проверки правильности передаваемого файла. Так например если файл действительно
передан нам через http post, то вы получите true. Ну а в противном случае, например если вам попытались передать что то не то, например комбинацию из
параметров для получения /etc/passwd — то вы получите false.
move_uploaded_file() — функция перемещает временный файл в туда, куда мы указываем. Первый параметр — что перемещаем, второй параметр — куда