Вопрос № 145786: Здравствуйте ув. эксперты вопрос такой: Я написал маленький скрипт для загрузки файлов на сервер, но вот в голове появилась идея реализовать загрузку таким образом чтобы с начало файл попадал на сервер во временную папку, после этого скрипт прове...
Вопрос № 145.786
Здравствуйте ув. эксперты вопрос такой: Я написал маленький скрипт для загрузки файлов на сервер, но вот в голове появилась идея реализовать загрузку таким образом чтобы с начало файл попадал на сервер во временную папку, после этого скрипт проверял что это за файл, ну к примеру если картинка то в папку images если exe то в папку ... и т.д. только не знаю как реализовываемый это. И как после загрузки файла сделать так чтобы файл был доступен к примеру по адресу http://сайт.ру/files/1234.html? Заранее
благодарен!!!
Отвечает: Товарищ Бородин
Здравствуйте, Сурыев Назар ! Будете смеяться, но файл обычно и попадает во временную папку. Работа с файлом после отправки формы на сервер осуществляется с помощью массива $_FILES['имя поля, с помощью которого Вы загружали файл']. Адрес временной папки, к примеру, равен $_FILES['имя поля, с помощью которого Вы загружали файл']['tmp_name']. Чтобы узнать тип файла, можно взять значение $_FILES['имя поля, с помощью которого Вы загружали файл']['type'].
А вообще,
привыкайте узнавать все сами. Для этого в PHP есть совершенно замечательные функции - print_r и var_dump. Передаете им массив или объект и узнаете всю необходимую Вам информацию путем распечатки массива или объекта на экране. Очень удобно, когда надо узнать, какое значение имеет тот или иной элемент массива или свойство объекта в "данный момент". Таким образом можно узнать не только значение свойства или элемента, но и вообще какие элементы имеются, какие значе
ния принимают.
Чтобы рассовывать файлы в зависимости от их типа можно пользоваться конструкцией switch. Пример:
switch ($_FILES['имя поля, с помощью которого Вы загружали файл']['type']) { case "image/gif": copy($_FILES['имя поля, с помощью которого Вы загружали файл']['tmp_name'],'/path/to/gif_images/'.$_FILES['имя поля, с помощью которого Вы загружали файл']['name']); break; // и т. д. }
При копировании
можно проделывать какие-либо действия, например, регистрировать загрузку в базе данных, чтобы она там приобрела идентификационный номер. После этого можно создать правило перезаписи URL`ов:
loader.php - скрипт-загрузчик файлов, которые загружаются на Ваш сайт. Принцип работы: 1) Он принимает с помощью метода $_GET переменную upload_id, 2) ищет в базе данных загрузку с таким ключом, 3) читает п
уть к файлу, который был загружен, 4) и делает редирект на этот файл.
Методика достаточно гибкая - Вы можете легко сделать загрузку файлов по паролю. Как это сделать, я рассказывать не буду, потому что Вы об этом не спрашивали, но спровоцирую с радостью :)
Теперь, когда посетитель идет по адресу http://сайт.ру/files/1234.html, он редиректится на скрипт loader.php(имя файла и его расположение может быть любым, главное, чтобы этот файл понимался интерпретатором PHP, как его родимый файл) с передачей
параметра upload_id(имя параметра тоже может быть любым), ищет в базе данных загрузку с таким номером, и редиректит пользователя на нее. Обратите внимание - сколько действий, а все делается за доли секунды. :)
Если непонятно что-то, спрашивайте! :) С уважением, Товарищ Бородин
Ответ отправил: Товарищ Бородин (статус: Профессионал) Россия, Новосибирск Тел.: +7-923-245-3366 ICQ: 346988855 ---- Ответ отправлен: 02.10.2008, 20:27 Оценка за ответ: 5 Комментарий оценки: Вот это тот ответ который мне нужен был, конечно же, создать все это пока для меня сложновато, но вот такой ответ дает ответы на многие вопросы, но все же я задам вопрос начет пароля :)
Большое спасибо за Ваш восхитительный ответ!