Как начать / принудительно загрузить файлы, которые постоянно находятся на PHP или другом языке? - PullRequest
1 голос
/ 15 марта 2010

Если у вас есть изображения или другие файлы, которые находятся снаружи, как заставить браузер загружать ссылку, когда пользователь нажимает на нее?

Использование «Контент-расположение: вложение;» заголовок будет делать это, но он не работает для файлов, которые находятся снаружи без локального чтения и импорта файла.

Ответы [ 6 ]

5 голосов
/ 15 марта 2010

Сначала вам нужно будет загрузить ресурс на сервер. Вы можете также захотеть сделать кеширование:

<?php
  header("Content-disposition: attachment; filename=myfile.jpg");
  echo file_get_contents("http://host.tld/path/to/myfile.jpg");
?>
2 голосов
/ 15 марта 2010

Это невозможно. Вы не можете диктовать клиенту, как обращаться с ресурсом, отличным от запрашиваемого в данный момент.

Вы можете использовать прокси-сервер только для извлечения внешнего внешнего файла и передачи его клиенту.

0 голосов
/ 16 июня 2016

Вы можете использовать атрибут загрузки. Просто добавьте download = 'filename.extension' к ссылке для скачивания:

 <a link='mysite.com/sfsf.extension' download='filenameuwant.extension'></a>
0 голосов
/ 17 июня 2015

Я использую метод, подобный этому для загрузки файлов mp4, может работать для текстовых файлов:

$file=fopen('http://example.com/example.txt','r');
header("Content-Type:text/plain");
header("Content-Disposition: attachment; filename="example.txt");
fpassthru($file);
0 голосов
/ 15 марта 2010

Я использую комбинацию вышеупомянутого заголовка «Content-Disposition», а также форсирую тип:

header("Content-type: attachment/octet-stream");
header('Content-disposition: attachment; filename="'.$filename.'"');
0 голосов
/ 15 марта 2010

Я не думаю, что можно принудительно загрузить файл, если вы не контролируете заголовки HTTP. Content-disposition: attachment - единственный способ, которым я знаю, чтобы достигнуть этого.

Хотя это, вероятно, не сработает, мое единственное предположение - попытка объединить Content-disposition с заголовком Location:

Content-disposition: attachment; filename=myfile.jpg
Location: http://www.somesite.com/myfile.jpg

(это длинный выстрел, вероятно, недействительный и / или просто плохая практика)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...