Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> скачивание файлов за пределами public_html 
:(
    Опции темы
Bounty
Дата 13.6.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.12.2005

Репутация: нет
Всего: нет



У меня лежат файлы за пределами сервера, то есть выше public_html.
Как организовать ссылку на скачивание этого файла? Может сделать отдельный скрипт для скачивания? Как его написать?
PM MAIL   Вверх
Golda
Дата 13.6.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Вариант 1. Организуйте скрипт для скачивания файла. В простейшем случае этот скрипт выдаст заголовок Content-Type с нужным типом данных и скопирует в stdout содержимое файла. Например, с помощью readfile(). Если отнесетесь к делу серьезнее, захотите учитывать подробности типа отдачи файла чанками, пользуйтесь лучше готовым решением. Например, посмотрите PEAR-овский класс HTTP_Download. Вся эта радость сработает, если не помешают настройки safe_mode и open_basedir

Вариант 2. Подходит для Apache. (Возможно, что-то подобное существует и для других серверов). Если установлен mod_alias, сделайте глобально или в пределах VirtualHost Alias, который заменит какую-нибудь директорию в пределах DocumentRoot той, в которой есть файлы для скачивания. Или не директорию, а конкретный файл. 




--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Bounty
Дата 14.6.2007, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.12.2005

Репутация: нет
Всего: нет



Спасибо, я учту ваши советыsmile
PM MAIL   Вверх
Bounty
Дата 18.7.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.12.2005

Репутация: нет
Всего: нет



Не могли бы вы поделиться кодом: как организовать конкретно скрипт для скачиваия файла, лежащего выше htdocs, please
PM MAIL   Вверх
Diesel Draft
Дата 18.7.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: 1
Всего: 5



Чтоб вернуться на одну папку назад используй ../.
Теперь смотри, далее все так как будто єто под папка, но задаешь другой адрес. 
А еще лучше использовать абсолютные адреса


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Mal Hack
Дата 18.7.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



В PHP вы можете обратиться к файлам не выше той директории, в которой имеет права пользователь от имени которого работает веб-сервер.
PM ICQ   Вверх
Golda
Дата 18.7.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Если права на чтения скачиваемых файлов у сервера есть, можете использовать что-то типа:


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
Diesel Draft
Дата 18.7.2007, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: 1
Всего: 5



Кстати можно использовать .htaccess , только не помню как


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
Golda
Дата 19.7.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Прошу прощения за предыдущий пост. Был технический сбой.

Пример php-скрипта (несколько упрощенный, правда) для скачивания zip-файла

Код

$file = 'myfile.zip';

header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT");
header("Content-Description: File Transfer");
header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename=\"$file\"");
header("Content-Length: " . filesize($file));
readfile($file);


Серверу достаточно прав на чтения $file. 


Пример решения через конфигурацию Apache, используя mod_alias.

Код

Alias /download   /home/golda/my_folder_with_files_for_download


Здесь /download - фиктивная папка, которой рельно не существует.

Пусть DOCUMENT_ROOT Вашего сайта находится в дирректории /var/www/www.mysite.com а сам сайт доступен по адресу http://ww.mysite.com
Тогда URL http://www.mysite.com/download/myfile.zip должен был бы вести к файлу /var/www/www.mysite.com/download/myfile.zip. Но благодаря Alias он ведет в /home/golda/my_folder_with_files_for_download/myfile.zip


Diesel Draft, просто составить URL ведущий в папку вне DOCUMENT_ROOT не получится. Сервер об этом позаботится, даже если написать что-то типа http://www.mysite.com/../myfile.zip
Поэтому предоставить пользователю напрямую URL для закачки такого файла, просто поколдовав над путем, не удастся. Или я неправильно поняла, что Вы имели в виду?


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.