|
|
|
| Вобщем такая проблема... Закачиваю файл на сервер следующим способом:
<?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_write, fread($handle, 8192));
}
fclose($handle_write);
fclose ($handle);
?>
|
но проблема в том что если файл выдаётся скриптом то на мой сервер закачивается нечто подобное: download.php?file=137896
Каким образом можно получить реальное название файла, как это делает любой браузер. | |
|
|
|
|
|
|
|
для: spider-x
(10.09.2008 в 15:50)
| | как выглядит html-код формы, и что Вы туда вводите? | |
|
|
|
|
|
|
|
для: 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
При этом файл останется целым... но только надо будет сменить имя и расширение... | |
|
|
|
|
|
|
|
для: 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(). Правда у меня эта штука не работает. | |
|
|
|
|
|
|
|
для: sim5
(10.09.2008 в 19:28)
| |
<?
echo $http_response_header[7];
|
Странно у меня 7-ой хеадер, а не 4-ый (((
Но всёравно спасибо :) | |
|
|
|
|
|
|
|
для: 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);
|
| |
|
|
|