отдача файла, но скрыть его местонахождение

Статус
В этой теме нельзя размещать новые ответы.

dimida

Создатель
Регистрация
23 Ноя 2008
Сообщения
17
Реакции
0
как можно отдать файл с хостинга под средством пхп, чтоб при скачивании файла не было видно прямого урла, так же чтоб и в сёрче не было видно... спасибо
 
PHP:
		header( "Pragma: public" );
		header( "Expires: 0" );
		header( "Cache-Control:" );
		header( "Cache-Control: public" );
		header( "Content-Description: File Transfer" );
		header( "Content-Type: application/force-download" );
		header( 'Content-Disposition: attachment; filename=file.rar;' );
		header( "Content-Transfer-Encoding: binary" );
header( "Content-Length: тут_размер файла" );
file_get_contents("../../../uploads/1.rar")
Ну там параметризацию и так далее сам сделаешь.
 
я делаю так
PHP:
function SaveToClient($filename,$name) {
if(ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
$UserBrowser = "Opera";
else if(ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
$UserBrowser = "IE";
else
$UserBrowser = '';

$mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ? 'application/octetstream' : 'application/octet-stream';

header('Content-Type: ' . $mime_type);
header('Content-Encoding: none');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
if ($UserBrowser == 'IE') {
header('Content-Disposition: inline; filename="'.$name.'";');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
}
else {
header('Content-Disposition: attachment; filename="'.$name.'"');
header('Pragma: no-cache');
}
@readfile($filename);
exit();
}
пример использования
PHP:
SaveToClient('http://site/file.zip','file.zip');
 
как можно отдать файл с хостинга под средством пхп, чтоб при скачивании файла не было видно прямого урла, так же чтоб и в сёрче не было видно... спасибо
Раз 15 перечитывал, так и не понял что Вы хотите сделать?
Как можно скрыть урл?
Если, например, стоит ФлэшГот (аддон к ФФ) то можно без труда увидеть, какая ссылка была передана.
Или я что-то не так понял?
 
Он хотел скрыть истинный путь до файла.
Что и было предложено.
Тобеж файл отдаеться при помощи пхп скрипта. В котором можно организовать проверку куков сессии и вобще чего угодно. И если все нормально то пхп скрипт просто будет отдавайть файл.
Правда у такого метода есть существенный недостаток.
Он довольно прилично нагружает систему.
Намного больше чем просто ссылка на файл.
 
2a1ien.n3t

file_put_contents("../../../uploads/1.rar")

наверное надо было написать
file_get_contents("../../../uploads/1.rar")

Да и вообще, универсальней будет черещ fopen открывать и показывать через fgets, т.к. с легкостью можно будет жевать большие файлы, чего не скажешь при работе с функциями reafile,file,file_get_contents
 
Спс за замечание. Опечатался
Кстати насчет того что лучше.
Зачем тогда в доках написано
Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком, поскольку для улучшения производительности функция использует алгоритм 'memory mapping' (если поддерживается операционной системой).
 
Угу, но только для мелких размеров. Ты сам то прикинь, через сколько скачиваний у тебя сервак зависнет если такие файлы по несколько сотен mB в оперативку сувать.
 
Ну про несколько дасятков мб да ты прав. неподумал.
Тогда за одно еще один вопрос впринципе пересекающийся с темой топика.
Что насчет passthru насклько нормально он выводит большой бинарный поток полученный после выполнения.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху