Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > передача файла через сервер


Автор: nooker 7.12.2005, 17:16
Добрый день!
У меня есть вопрос, на который я не могу найти ответ самостоятельно.
Допустим, есть сервер с поддержкой PHP (этот вариант предпочтительней т.к. таких хостингов больше или же это быть CGI написанные на других языках). Пользователю надо дать возможность скачать большой файл находящийся на другом сайте, но так чтобы создавалось впечатление, что он качает его с этого. Возможно ли решить эту задачу при помощи CGI? Как? Если по Вашему мнению это не возможно реализовать при помощи CGI, то при помощи каких средств это можно сделать? Пользователь не должен догадаться, что файл качается с другого адреса.

Автор: AntonioBanderaz 8.12.2005, 10:33
Код

<?php
function download_file($file = NULL){
        $filename = basename($file);
        //$dir =  dirname($file);
    
        header('Content-type: application/force-download');
        header('Content-Transfer-Encoding: Binary');
        header('Content-length: '.filesize($file));
        header('Content-disposition: attachment; filename='.$filename);
        readfile($file);
}
?>


Если конечно filesize сработает на удалёнке, если нет то придётся сначала копировать к себе на сервер, а потом уже отдавать на скачку.
Если не сработает readfile то вместо него поставь (это для удалёнке, на локальном она работает)
Код

$remote = fopen($file)
while (!feof($remote)) {
    echo fread($remote, 1024);
}
fclose($remote);


Если не сработает basename(), то параллельно передавай в функцию имя для скачки.

Автор: Mal Hack 8.12.2005, 12:58
Цитата(AntonioBanderaz @ 8.12.2005, 10:33)
Если конечно filesize сработает на удалёнке, если нет то придётся сначала копировать к себе на сервер, а потом уже отдавать на скачку.

Не будет рабоать. Но можно написать свою функцию, которая будет узнавать размер удаленного файла. Где-то она была тут.
ЗЫ: А ФТП на что?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)