как передать новый url на скачку файла
есть ссылка на файл типа :
http://sait1.ru/download.php?url=название_файла.txt как сделать чтобы скрипт в download.php выдавал ссылку на скачку файла с другого домена , типа: http://sait2.ru/название_файла.txt ну и ,чтобы у клиентский браузер сохранял файл с тем же названием... |
Цитата:
<? var url = 'http://sait2.ru/' + $_GET['url']; echo "<a href='$url'>сцылко</a>"; Цитата:
|
Цитата:
|
Цитата:
|
возможно не так сформулировал, уточняю - нужно чтобы при клике на http://sait1.ru/download.php?url=название_файла.txt не новая ссылка вылезала , а сразу загрузка начиналась но уже по новой ссылке http://sait2.ru/название_файла.txt
|
Чтоб задать имя скачиваемого файла нужно выстовить http-заголовок Content-Disposition вроде бы.
Ну а сам файл запрашиваешь через fopen fread (если не отключена фишка работы с файлами по http) и отправляешь в stdout. Запросить еще можно через cURL |
как подсунуть имя файла более менее ясно, но вот как подсунуть ссылку для скачивания причем так чтобы файл не закачивать локально, а просто дать какачть напрямую, но по новой ссылке?
|
Можешь сделать редирект на URL файла. Но тогда не сможешь форсировать закачку, ибо txt-файл браузер скорее всего не предложит сохранить, а вместо этого отобразит его содержимое. Если сервер форсирует сохранение файла (через Content-Disposition), то проблема отпадает.
|
Цитата:
|
Ты либо через соединение со своим сервером передаешь данные (то есть читаешь удаленный файл и отдаешь браузеру данные) - то есть играешь роль прокси. Либо ты редиректишь браузер на другой сервер и он соединяется с ним и качает с него. Других вариантов нет.
|
ясно я так и думал , что без редиректа не обойтись
|
Ты слепой? Я два варианта написал. Можно обойтись без редиректа.
|
На js наверно без редиректа. Пишите атрибут download в a href с другого сайта на своем сайте.
|
Цитата:
|
Цитата:
пытаюсь резюмировать: правильно ли я понял, что без предварительной загрузки файла выдать ссылку на другой сайт через header( .....) не получится? |
Что ты понимаешь под "предварительной загрузкой"? Тебе не обязательно хранить файл у себя на сервере. Но трафик придется через сервер пропустить. В этом и суть "прокси".
|
Цитата:
|
Ну дык и выдавай. В чем проблема? Но тогда ты не сможешь изменить имя файла (кроме как через атрибут download, который работает не во всех браузерах)
|
так вопрос как выдавать...
вот кликнули на ссылку http://sait1.rudownload.php?url=название_файл а.txt какой код нужн в download.php, чтобы у юзера в браузере открылся диалог на скачку но уже по ссылке http://sait2.ru/название_файла.txt |
Ну так делай редирект на нужный URL. Вот только форсировать скачку ты уже не сможешь. Если sait2 форсирует - ок. Если нет, то на усмотрение браузера файл может открыться для просмотра прямо в браузере.
|
header("HTTP/1.1 200 OK"); header("Connection: close"); header("Content-Type: application/octet-stream"); header("Accept-Ranges: bytes"); header("Content-Disposition: Attachment; filename=screen.jpg"); //screen.jpg - имя файла //получаем с помощью curl и отдаем на загрузку $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, 'http://YouPath/FileName'); //указываем путь к внешнему ресурсу $data = curl_exec($ch); curl_close($ch); echo $data; exit; |
Понимаешь, тс хочет и рыбку съесть, и в воду не лезть, так что твой вариант не подойдет )
|
Часовой пояс GMT +3, время: 01:16. |