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
- Récupérer des fichiers de mysql avec du php
- Fichiers epub - Guide
- Renommer des fichiers en masse - Guide
- Récupérer compte yahoo sans numéro de téléphone - Guide
- Comment récupérer des messages supprimés sur whatsapp - Guide
- Expert php - Télécharger - Langages
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.
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, 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 !
Genre fichiers/cours/cours_num_1.pdf
Certains fichiers, comme Word (Je crois), quand tu clique sur le lien, au lieu de s'ouvrir, ils se téléchargent, c'est possible d''y remédier, mais je sais pas comment !
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 !
je doit ajouter le nom du cours juste après?