Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 1011
от 07.10.2008, 17:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 407, Экспертов: 30
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 145786: Здравствуйте ув. эксперты вопрос такой: Я написал маленький скрипт для загрузки файлов на сервер, но вот в голове появилась идея реализовать загрузку таким образом чтобы с начало файл попадал на сервер во временную папку, после этого скрипт прове...

Вопрос № 145.786
Здравствуйте ув. эксперты вопрос такой:
Я написал маленький скрипт для загрузки файлов на сервер, но вот в голове появилась идея реализовать загрузку таким образом чтобы с начало файл попадал на сервер во временную папку, после этого скрипт проверял что это за файл, ну к примеру если картинка то в папку images если exe то в папку ... и т.д. только не знаю как реализовываемый это.
И как после загрузки файла сделать так чтобы файл был доступен к примеру по адресу http://сайт.ру/files/1234.html?
Заранее благодарен!!!
Отправлен: 02.10.2008, 16:49
Вопрос задал: Сурыев Назар (статус: 8-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Товарищ Бородин
Здравствуйте, Сурыев Назар !
Будете смеяться, но файл обычно и попадает во временную папку. Работа с файлом после отправки формы на сервер осуществляется с помощью массива $_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`ов:

RewriteRule /files/(d).html /loader.php?=upload_id=$1

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
Комментарий оценки:
Вот это тот ответ который мне нужен был, конечно же, создать все это пока для меня сложновато, но вот такой ответ дает ответы на многие вопросы, но все же я задам вопрос начет пароля :) Большое спасибо за Ваш восхитительный ответ!


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное