Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сохранить файл
 
 автор: stasmus   (27.02.2007 в 09:20)   письмо автору
 
 

У меня такой вопросик. как получить реальное имя файла, если еспользуется связка fopen('http://mysite.com/download.php?id=123') и функция fwrite.

Тоесть открываем файл через http и сохраняем у себя. А в ссылке нет прямого имени файла

   
 
 автор: ZuArt   (27.02.2007 в 09:47)   письмо автору
 
   для: stasmus   (27.02.2007 в 09:20)
 

если открывать файл по HTTP - то НИКАК, т.к. настоящее имя файла может быть каким угодно...
как создатель сайта захочет, под таким URL и будет виден файл того или иного раздела.

   
 
 автор: Саня   (27.02.2007 в 09:55)   письмо автору
 
   для: stasmus   (27.02.2007 в 09:20)
 

Не вижу другого способа, как запрашивать файл посредством сокетов или curl и поискать заголовок Content-Disposition в вернувшихся заголовках.

   
 
 автор: ZuArt   (27.02.2007 в 10:06)   письмо автору
 
   для: Саня   (27.02.2007 в 09:55)
 

даже так не выйдет =)

вот положу я в корень сайта такой файлик .htaccess:

RewriteEngine on
RewriteRule ^/news/([0-9]+)$ /my_news.php?id=$1 [L]

и обращение к новости будет по ссылке http://сайт/news/№_новости - и никак не получится выяснить извне, что на самом деле запускается скрипт my_news.php и ему передается параметр новости...

+ к тому же, сайт может собираться из скольки угодно включений - а это не один файл, а 2-3-5-10- ... (100 в конце концов)

   
 
 автор: Саня   (27.02.2007 в 10:36)   письмо автору
 
   для: ZuArt   (27.02.2007 в 10:06)
 

Совершено не важно где находится файл на сервере, какая у него ссыла на скачивание, какое имя, что написано в .htaccess. Если передаётся заголовок Content-Disposition и в нём указан filename, то выцепить имя файла не представляет сложности.

   
 
 автор: stasmus   (27.02.2007 в 11:36)   письмо автору
 
   для: Саня   (27.02.2007 в 10:36)
 

Тем не менее, запросив файл по ссылке вида download.php?id=123 обычным браузером мы можем получить его настоящее имя. (Если нам конечно разрешено фалом .htaccess). А как сделать это при помощи скрипта? без использования сокетов. Всегда ли будет заголовок Content-Disposition ?

   
 
 автор: Саня   (27.02.2007 в 15:40)   письмо автору
 
   для: stasmus   (27.02.2007 в 11:36)
 

Ещё раз повторяю: имя файла в таких случая передаётся в заголовках, а именно в заголовке Content-Disposition. Распарсить заголовки в скрипте - плёвое дело. Если бы такого заголовка не было, файл назвался бы по имени скрипта и его query string.

> Всегда ли будет заголовок Content-Disposition ?
Всё зависит от скрипта. Однако я встретил только один скрипт в интернете, который по фейковым ссылкам выдавай файл без реального имени.
В вашем случае этот заголовок передаётся.

Без использования сокетов - думаю только curl.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования