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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Файловые порталы, способы реализации 
:(
    Опции темы
ST_Falcon
Дата 3.9.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 14.11.2003
Где: Львов

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



в силу своей врожденной недальновидности я не могу сходу догадаться каким образом работают всевозможные файловые порталы. вот непонимаю я каким образом даем человеку линк на php скрипт, а в результате он получает файл... интуиция подсказывает что ничего сложного там нету. 

может кто то популярно объяснит основные принципы или даст линк на хорошие статьи. буду очень признателен за помощь smile
PM MAIL ICQ   Вверх
ewolf
Дата 3.9.2007, 16:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 15.8.2006
Где: г. Москва

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



В скрипте необходимо сделать две вещи:

1. передать заголовки браузеру, что сейчас он получит файл, а не html-страницу
2. непосредственно направить содержимое файла браузеру.

Пример, реализующий эти вещи:

Код

<?php

$basename = 'image.jpeg'; // Это имя покажет браузер в диалоге "сохранить как"
$file = 'real_image.jpeg'; // Это настоящее имя файла на сервере

header('Content-Description: File Transfer'); 
header('Content-Type: application/force-download'); 
header('Content-Length: ' . filesize($file)); // размер файла
header('Content-Disposition: attachment; filename=' . $basefile); 

readfile($file);
?>


PM MAIL ICQ   Вверх
Golda
Дата 4.9.2007, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если нужно реализовать возможность докачки, нужно будет еще дополнительно поработать с заголовками, чтобы реализовать отдачу файла чанками: анализировать заголовки запроса, есть ли там HTTP_RANGE, отдавать соответствующий ситуации код 200 или 206, сообщать броузеру заголовком, какая именно часть файла передается, ну и выдавать в содержимом не весь файл, а нужную часть. 

Еще неплохо бы учесть cache-control. Но в целом, пример ewolf дает хорошее представление о сути задачи. HTML Вы передаете, файл, текст, картинку... по HTTP, броузер интерпритирует, в основном, по HTTP-заголовкам, которые ему пришли. Соответственно отдавайте такие заголовки, чтобы броузер "думал", что ему пересылают файл, и пересылайте его содержимое.

Можете посмотреть реализацию в PEAR-овском HTTP_Download


--------------------
"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.

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


 




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


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

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