Мне нужна помощь с проблемой в инструменте, который я разрабатываю.
Мне нужно загрузить внешний файл и переименовать его, но без использования readfile (), file_get_contents () или fread () (файлы слишком большие, чтобы читать их на сервере и загружать их снова на гостевой ПК).
Я пробовал сначала:
Код:
header("Location: http://www.example.com/example_download.zip");
Он работает для загрузки, но нет для example_download.zip переименования.
Поэтому я попытался с readfile ():
Код:
header("Content-Disposition: attachment; filename="example_download_2.zip"\n\n"); header("Content-Type: application/force-download"); readfile("http://www.example.com/example_download.zip"); exit;
С приведенным выше кодом он работает хорошо, сначала загружая удаленный файл на сервере, переименовывая его и отправляя его посетителю с новым именем, но использование ресурсов этого процесса очень велико, а также использование полосы пропускания.
Поэтому я ищу способ создания принудительной загрузки внешнего файла, переименования его на лету и создания загрузки с новым именем, но загрузки непосредственно из источника. Возможно?
Заранее спасибо
HTML5 теперь позволяет вам делать то, что вы хотите, через атрибут download
:
<a href="http://www.example.com/example_download.zip" download="custom_filename.zip"> Link </a>
Больше информации:
http://developers.whatwg.org/links.html#attr-hyperlink-download http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
Это невозможно для вас. Если ваш php-скрипт перенаправил клиент на другой URL-адрес, то все заголовки HTTP останутся на новый скрипт url, чтобы решить. Вы должны загрузить его, чтобы переименовать его.