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

Форум PHP

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

 

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

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

тема: Имя закачиваемого файла
 
 автор: spider-x   (10.09.2008 в 15:50)   письмо автору
 
 

Вобщем такая проблема... Закачиваю файл на сервер следующим способом:

<?php
    $fn 
$_POST['in']; 
    
$handle fopen ($fn'rb'); 
    if(!
$handle) { 
        echo 
'Не могу открыть исходный файл!'
        die; 
    } 
    
$handle_write = @fopen ('./download/'.basename($fn), 'wb'); 
    if(!
$handle_write) { 
        echo 
'Не могу создать файл!'
        die; 
    } 
    while (!
feof($handle)) {
        
fwrite($handle_writefread($handle8192)); 
    } 
    
fclose($handle_write); 
    
fclose ($handle); 
?>

но проблема в том что если файл выдаётся скриптом то на мой сервер закачивается нечто подобное: download.php?file=137896
Каким образом можно получить реальное название файла, как это делает любой браузер.

  Ответить  
 
 автор: Trianon   (10.09.2008 в 16:19)   письмо автору
 
   для: spider-x   (10.09.2008 в 15:50)
 

как выглядит html-код формы, и что Вы туда вводите?

  Ответить  
 
 автор: spider-x   (10.09.2008 в 18:45)   письмо автору
 
   для: Trianon   (10.09.2008 в 16:19)
 

Не могу понять причём тут форма... я передаю ссылку на файл ГЕТом... ссылка может быть
http://www.catode.ru/upload/iblock/89e/Portable_Google_Chrome_catode.ru.zip

а может быть
http://forum.cosmostv.by/index.php?act=attach&type=post&id=252064

и во 2 случае файл запишется с именем index.php?act=attach&type=post&id=252064
При этом файл останется целым... но только надо будет сменить имя и расширение...

  Ответить  
 
 автор: sim5   (10.09.2008 в 19:28)   письмо автору
 
   для: spider-x   (10.09.2008 в 18:45)
 

<?
echo $http_response_header[4];

Для второго примера выведет:
Content-Disposition: inline; filename="_orePlayer.Professional.v1.2.5.Build.4506.for.Windows.Incl.Cracked.part2.rar"

PS. Мертвецкая тишина :) В общем смотрите массив http_response_header массива $GLOBALS после fopen. Дело в том, что Content-Disposition: не обязательно будет в нем всегда под индексом 4. Ну и заодно разницу для двух вами приведенных url в этом массиве увидите.
А также см. file_get_wrapper_data(). Правда у меня эта штука не работает.

  Ответить  
 
 автор: spider-x   (10.09.2008 в 21:43)   письмо автору
 
   для: sim5   (10.09.2008 в 19:28)
 

<? 
echo $http_response_header[7];

Странно у меня 7-ой хеадер, а не 4-ый (((
Но всёравно спасибо :)

  Ответить  
 
 автор: sim5   (11.09.2008 в 04:47)   письмо автору
 
   для: spider-x   (10.09.2008 в 21:43)
 

Потому, что разное количество заголовков и передача, видимо.
PS. Я бы так сделал:
<?
$url 
"http://forum.cosmostv.by/index.php?act=attach&type=post&id=252064";
$handle fopen($url'rb');
for (
$i=0$i<count($http_response_header); $i++)
if (
strpos($http_response_header[$i], 'filename')) { 
  
$name trim(substr($http_response_header[$i], strpos($http_response_header[$i], "=")+1), "\"");
  break;
}
if (!
$name$name basename($url);

  Ответить  
Rambler's Top100
вверх

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