J'ai besoin de mon serveur pour agir comme un proxy entre un serveur tiers (où le fichier est situé à l'origine) et l'utilisateur final. Autrement dit, mon serveur télécharge le fichier à partir du serveur tiers et, séquentiellement, l'utilisateur le télécharge depuis mon serveur. Cela devrait entraîner une bande passante encourue de deux fois la taille du fichier. Comment ce processus peut-il être réalisé en utilisant PHP?Comment utiliser mon serveur comme proxy pour télécharger des fichiers via PHP?
4
A
Répondre
12
Très très simplement comme ceci:
$url = $_GET['file'];
$path_parts = pathinfo($url);
$ext = $path_parts['extension'];
$filename = $path_parts['filename'];
header("Content-type: application/$ext");
header("Content-Disposition: attachment; filename=$filename");
echo file_get_contents($url);
Si le fichier est plus grand que quelques méga-octets, utilisez fopen fread et télécharger le fichier frwrite en morceaux et envoyer au client en morceaux.
3
$fp = fopen($url, 'rb');
foreach (get_headers($url) as $header)
{
header($header);
}
fpassthru($fp);
exit;
Ceci va simplement télécharger un fichier distant dans le navigateur avec des en-têtes corrects.
Vous pouvez utiliser 'header (" Content-Disposition: attachment; filename = \ "$ filename \" ");' si votre nom de fichier contient des espaces – SapuSeven