php – Как принудительно загрузить файл?

Я хочу добавить функцию «Загрузить этот файл» под каждым видео на одном из моих сайтов. Мне нужно заставить пользователя загружать файл, а не просто ссылаться на него, так как это иногда начинает воспроизводить файл в браузере. Проблема в том, что видеофайлы хранятся на отдельном сервере.

В любом случае, я могу заставить загрузить PHP?

    Вы можете попробовать что-то вроде этого:

    $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 вам необходимо включить fopen_wrappers .

    Протестированный файл 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> 

    Попробуй это:

     <?php $FileName = '/var/ww/file.txt'; header('Content-disposition: attachment; filename="'.$FileName.'"'); readfile($FileName); 

    Ключ – это header() . Вам необходимо отправить заголовок вместе с загрузкой, и он заставит диалог «Сохранить файл» в браузере пользователя.

     <?php $FileName = '/var/ww/file.txt'; header('Content-disposition: attachment; filename="'.$FileName.'"'); readfile($FileName); 

    используя этот код. можно сохранить имя файла так, как вы хотите. например, у вас есть url: http://remoteserver.com/file.mp3 вместо «file.mp3» вы можете использовать этот скрипт для загрузки файла как «newname.mp3»,

     <?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; ?>