Bonjour,
J'ai quelques soucis avec le téléchargements sous php. Alors voilà j'explique un petit peu comment je voudrais faire. Donc j'ai une machine ou mon site est dans le dossier '/var/www/'. Je voudrais faire partager des fichiers a titre privé des fichiers sur mon serveur, ces fichiers sont de différents types (.avi, .tar.gz, .flv, .zip et .mp4 et je crois que c'est tout, peut être aussi des pdf). Mais comme ces fichiers sont uniquement a usage privé je ne veux que personne puisse y accéder a par ceux qui ont un compte sur mon site. Je me suis dis qu'il pourrait être intéressant de placer ces fichier dans un autre répertoire que celui de mon site (a savoir /opt/), dans lequel je peux classe en catégorie mes fichiers (video, texte...).
Donc j'ai créé une page pour lister les éléments d'un répertoire:
Ma page download force le download
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <? $dir = opendir("/opt/films/"); while($file = readdir($dir)) { $file = utf8_decode($file); if($file=='.' OR $file=='..'){ }else{ echo '<a href="/index.php?page=Download&cat=videos&name='.$file.'">'.$file.'</a> <br />'; } } closedir($dir); ?>
Mon soucis est le suivant, lorsque je télécharge un fichier via le site, ce fichier est corrompu alors que quand j'essaye de le lancer sur la machine virtuel ou même de lire en vidéo directement par le site il n'y a aucun soucis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <? $cat=$_GET['cat']; $name=$_GET['name']; $urlf='/opt/'.$cat.'/'.$name.''; echo $urlf; if(file_exists($urlf)){ header("Content-Type: application/force-download" ); header("Content-Length:".filesize($urlf)); header('Content-Disposition: attachment; filename="'.$name.'"'); readfile($urlf); } ?>
Donc est ce qu'il y a des choses a régler pour palier a ce problème?
Est-ce une bonne solution?
Est ce sécurisé?
Faut il rajouter un .htaccess dans mon repertoire /opt/ ou autre?
Merci aux gens qui auront pris le temps de lire ce sujet ainsi qu'a ceux qui y répondront.
Partager