Récupérer des fichiers de mysql avec du php
natier -
J'essaye de réaliser un site web ou je met différente ressources en ligne. Pour cela, j'ai créer une base de donnée qui contient plusieurs et dans chacune le nom du fichier et le fichier. J'ai créer un script php pour récupérer les informations met j'ai un problème: j'arrive a récupérer correctement le nom du fichier mais pas le fichier. Tout le fichier s'affiche avec des caractère en plus. Je voudrai pouvoir mettre un lien qui permet de télécharger ou bien d'ouvrir le fichier.
Merci de votre aide
3 réponses
La problématique centrale est de récupérer correctement le nom du fichier tout en évitant d'afficher ou d'extraire le contenu du fichier associé, afin de proposer un lien de téléchargement fiable. Des solutions préconisent de ne pas stocker les fichiers dans la base de données et d'enregistrer ces fichiers dans un dossier, en conservant seulement leur chemin dans la base. Ensuite, PHP peut récupérer ce chemin et générer un lien ou activer le téléchargement via les en-têtes adéquats pour ouvrir ou sauvegarder le fichier correctement. D'autres pratiques recommandent en outre de sécuriser l'accès par authentification et d'utiliser un script de téléchargement qui définit les en-têtes appropriés, afin d'éviter l'exposition directe des chemins ou du contenu.
-
si j'enregistre le lien vers mes cours, je ne pourai pas ouvrir directement mes cours, sa m'ouvrira d'abord le répertoire et après je serai oubligé de cliquer sur le cour pour l'ouvrir? Moi je ve pouvoir ouvrir directement mon cours depui le site web.
-
-
-
-
I repeat !
C'est pas le lien du répertoire que tu dois mettre dans ta BD, c'est le lien vers ton fichier !
Ou juste le nom du fichier !
1 - Tu mets le lien absolu !
Dans ta BD, tu mets le lien complet, Exemple :
http:tonsite.com/fichiers/cours/nom_du_fichier1.pdf
Et lors de l'affichage des liens, tu mets direct !<?php while($donnees = mysql_fetch_array($req)) { echo '<a href="'.$donnees['lien'].'">'.$donnees['nom'].'</a>'; } ?>
2 - Tu mets le lien relatif !
Exemple : fichiers/cours/nom_du_fichier1.pdf
Et lors de l'affichage des liens, tu mets !<?php while($donnees = mysql_fetch_array($req)) { echo '<a href="http://www.tonsite.com/$donnees['lien'].'">'.$donnees['nom'].'</a>'; } ?>
3 - Tu mets juste le nom du fichier !
Dans le champs lien de ta BD, tu aura Exemple : nom_du_fichier1.pdf
Et lors de l'affichage, tu mets ...<?php while($donnees = mysql_fetch_array($req)) { echo '<a href="http://tonsite.com/fichiers/cours/'.$donnees['lien'].'">'.$donnees['nom'].'</a>'; } ?>
Conseil, la dernière implémentation est la meilleure ...
1 - Parce qu'elle sera plus fluide en cas ou tu voudra changer le répertoire ou tu enregistre tes cours , car il suffira de changer l'adresse lors de l'affichage ...
2 - Ta base de données sera moins chargé, car au lieu de stocker une adresse absolu qui comporte au moins 40 caractères, tu tu contentera de (au plus) 10 caractères seulement !
Remarque : Il n'est pas obligatoire de mettre le lien absolu lors de l'affichage, c'est possible de mettre ceci :<?php while($donnees = mysql_fetch_array($req)) { echo '<a href="./fichiers/cours//'.$donnees['lien'].'">'.$donnees['nom'].'</a>'; } ?>
Sauf que ça dépend de l'emplacement de la page appelante ! -
-
-
N'enregistre jamais un fichier directement dans ta base de données. Enregistre le plutot dans un dossier puis mets le chemin du dossier dans la basse données, php ensuite récupera le chemin de ce fichier et tu pourras l'utiliser.
-
J'ai déjà enregistrer mes fichiers dans la base de données, tu connait pas quand même le code php pour récupérer les fichiers et pour pouvoir les ouvrir depuis une page web
-
-
dans ma base g créer une table anglais avec le nom de mes cours et à chaque nom est associé un fichier, il s'agit d'un champ de type blod
je vroudrai créer un tableau sur mon site web qui me retourne tous mes cours avec leurs nom (sa c bon) et le fichier que je souhaite faire apparaitre en lien hypertexte pour pouvoir l'ouvrir quand je clic dessus -
-
-
- Soit tu stocke le contenu des tes cours dans ce champs de typle BLOB, sous forme de texte !
- Soit, comme ça a été dit plus haut, tu enregistre tes cours dans un répertoire du site, sous forme de PDF ou Fichier WORD ..., et tu enregistre seulement le lien(chemin) vers les cours !
Enregistrer ton fichier sous forme binaire dans ta BD est une très mauvaise idée, car ça surchargera et alourdira tes requêtes !
A éviter !
-