PHP - Cómo descarga de un archivo forzar?
-
22-08-2019 - |
Pregunta
Estoy buscando para añadir una función de "Descarga este archivo" debajo de cada video en uno de mis sitios. Necesito forzar al usuario a descargar el archivo, en lugar de vincular a ella, desde que se inicia la reproducción de un archivo en el navegador veces. El problema es que los archivos de vídeo se almacenan en un servidor independiente.
Cualquier manera que puedo forzar la descarga en PHP?
Solución
Usted podría intentar algo como esto:
$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;
Acabo de probar y funciona para mí.
Tenga en cuenta que para readfile
para ser capaz de leer una URL remota, es necesario tener el fopen_wrappers
habilitado.
Otros consejos
archivo download.php Probado es
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");
y el enlace para descargar es
<a href="download.php?file=http://url/file.pdf"> Descargar </a>
Prueba esto:
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
La clave es la header()
. Es necesario enviar la cabecera junto con la descarga y que obligará a la ventana de diálogo "Guardar archivo" en el navegador del usuario.
<?php
$FileName = '/var/ww/file.txt';
header('Content-disposition: attachment; filename="'.$FileName.'"');
readfile($FileName);
utilizando este código. ¿es posible guardar el nombre del archivo a lo que desea. por ejemplo, tiene url: http://remoteserver.com/file.mp3 en lugar de "archivo. mp3" se puede utilizar este script para descargar el archivo como '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;
?>
No sé esta es la mejor manera o no, pero me gusta que, a corto y simple.
Si quieres descargar archivo cuando visita URL , que puede hacer, como a continuación
<a href="resume.pdf" download></a>
<script>document.querySelector('a').click();</script>