Question

Je cherche à ajouter une fonction « Télécharger ce fichier » ci-dessous toutes les vidéos sur un de mes sites. Je dois forcer l'utilisateur à télécharger le fichier, au lieu de simplement un lien vers elle, depuis que commence la lecture d'un fichier dans le navigateur parfois. Le problème est, les fichiers vidéo sont stockés sur un serveur distinct.

De toute façon je peux forcer le téléchargement en PHP?

Était-ce utile?

La solution

Vous pouvez essayer quelque chose comme ceci:

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

Je viens de tester et il fonctionne pour moi.

S'il vous plaît noter que pour les readfile pour pouvoir lire une URL à distance, vous devez avoir votre fopen_wrappers activée.

Autres conseils

Testé fichier download.php est

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");

et le lien à télécharger est

<a href="download.php?file=http://url/file.pdf"> Descargar </a>

Essayez ceci:

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

La clé est le header(). Vous devez envoyer l'en-tête ainsi que le téléchargement et il forcera la boîte de dialogue « Enregistrer le fichier » dans le navigateur de l 'utilisateur.

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

en utilisant ce code. est-il possible d'enregistrer le nom de fichier à ce que vous voulez. par exemple, vous avez url: http://remoteserver.com/file.mp3 au lieu de « fichier. mp3" pouvez-vous utiliser ce script pour télécharger le fichier en tant que « 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;

?>

Je ne sais pas que ce soit la meilleure façon ou non, mais j'aime ça, court et simple.

Si vous voulez Télécharger fichier lorsque vous visitez URL , vous pouvez faire comme ci-dessous

<a href="resume.pdf" download></a>
<script>document.querySelector('a').click();</script>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top