Bonjour à tous,
Je vous explique déjà le contexte :
Sur le site A j'ai des fichiers stockés dans un répertoire protégé par un .htaccess (Deny From All).
Depuis ce site A je permet à des visiteurs identifiés de télécharger ces fichiers avec ce script :
Jusqu'ici tout va bien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $path = "fichiers/".$id."/nom_fichier.pdf"; if(file_exists($path) && strpos($path, '.') !== 0) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='. basename($path)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path)); readfile($path); exit; } else array_push($tab_error, "Ce fichier n'est plus disponible.");
Mais je souhaiterais pouvoir télécharger ces fichiers depuis un site B.
J'ai donc paramétré allow_url_fopen sur les 2 sites et mis ce code sur le site B :
Sauf que forcément file_exists renvoi false.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $path = "http://www.domaine.com/fichiers/".$id."/nom_fichier.pdf"; if(file_exists($path) && strpos($path, '.') !== 0) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='. basename($path)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($path)); readfile($path); exit; } else echo "Ce fichier n'est plus disponible.";
Si je test avec fopen il me retourneJe me demande donc si c'est vraiment possible ?failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden
Merci bien d'avance.
Partager