Php - Как принудительно загрузить файл?
Я хочу добавить функцию "Загрузить этот файл" под каждым видео на одном из моих сайтов. Мне нужно заставить пользователя загружать файл, а не просто ссылаться на него, так как это иногда начинает воспроизводить файл в браузере. Проблема в том, что видеофайлы хранятся на отдельном сервере.
В любом случае, я могу заставить загрузку в PHP?
Ответы
Ответ 1
Вы можете попробовать что-то вроде этого:
$file_name = 'file.avi';
$file_url = 'http://www.myremoteserver.com/' . $file_name;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
readfile($file_url);
exit;
Я только что протестировал его, и он работает для меня.
Обратите внимание, что для readfile
, чтобы читать удаленный URL-адрес, вам нужно включить fopen_wrappers
.
Ответ 2
Протестированный файл download.php
function _Download($f_location, $f_name){
$file = uniqid() . '.pdf';
file_put_contents($file,file_get_contents($f_location));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename=' . basename($f_name));
readfile($file);
}
_Download($_GET['file'], "file.pdf");
а ссылка для загрузки -
<a href="download.php?file=http://url/file.pdf"> Descargar </a>
Ответ 3
Попробуйте следующее:
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
Ключ header()
. Вам необходимо отправить заголовок вместе с загрузкой, и он заставит диалог "Сохранить файл" в браузере пользователя.
Ответ 4
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
используя этот код. можно сохранить имя файла так, как вы хотите. например, у вас есть url: http://remoteserver.com/file.mp3 вместо "file.mp3" вы можете использовать этот script для загрузки файла как "newname.mp3"
Ответ 5
<?php
$file_name = 'video.flv';
$file_url = 'http://www.myserver.com/secretfilename.flv';
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
echo file_get_contents($file_url);
die;
?>
Ответ 6
Я не знаю, это лучший способ или нет, но мне это нравится, шорт & простой.
Если вы хотите загрузить файл при посещении URL-адреса, вы можете сделать следующее
<a href="resume.pdf" download></a>
<script>document.querySelector('a').click();</script>