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?

¿Fue útil?

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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top