Page 1 sur 1

téléchargement des fichiers

Posté : 05 mai 2015, 11:43
par challenger11
Bonjour,
je veux télécharger un fichier dont l'URL est stocké dans ma base de données tous marche seulement quand le nom du fichier contiens beaucoup d'espaces et de tirés il ne le télécharge pas.Quand j’enlève les espaces et les tirés quelque soit la longueur du nomdu fichier il le télécharge avez vous une idée et merci pour votre attention.
<?php
mysql_connect('localhost','root','');
mysql_select_db('livable');
$sql="SELECT url
		FROM liv";
$rs=mysql_query($sql) or exit('Erreur SQL ligne '.__LINE__.' : '.mysql_error());
while( $ligne=mysql_fetch_array($rs))
{
$url=$ligne['url'];
echo $url ;
echo '<a href=telecharger.php?fich='.$url.'>telecharger</a>';
}
?>
<?PHP
$fichier = $_GET["fich"];  
$fichier_taille = filesize($fichier); 
header("Content-disposition: attachment; filename=$fichier"); 
header("Content-Type: application/force-download"); 
header("Content-Transfer-Encoding: application/octet-stream"); 
header("Content-Length: $fichier_taille"); 
header("Pragma: no-cache"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
header("Expires: 0"); 
readfile($fichier);
?>

Re: téléchargement des fichiers

Posté : 05 mai 2015, 12:52
par Ryle
Hello !

Ton lien "télécharger" n'est pas bon, il manque les guillemets pour délimiter les attributs :
Le code php
echo '<a href=telecharger.php?fich='.$url.'>telecharger</a>';
va générer le code html suivant :
<a href=telecharger.php?fich=mon nom de fichier avec espace>telecharger</a>
Du coup le serveur considère que la balise href a pour valeur "telecharger.php?fich=mon" et que "nom", "de", "fichier", ... sont d'autres attributs html qu'il ne sait pas interpréter.

Pour que le contenu de l'attribut soit bien identifié, le lien que tu dois proposer doit être le suivant :
<a href="telecharger.php?fich=mon nom de fichier avec espace">telecharger</a>

echo '<a href="telecharger.php?fich=' . $url . '">telecharger</a>';
A noter qu'il est recommandé d'éviter d'avoir des accents, des espaces ou des caractères spéciaux autres que - et _ dans les noms de fichier :)

Re: téléchargement des fichiers

Posté : 05 mai 2015, 13:27
par challenger11
@Ryle Parfait une grande précision merci du fond du cœur

Re: [RESOLU] téléchargement des fichiers

Posté : 05 mai 2015, 14:37
par @rthur
Bonjour,

Je me permets d'apporter 2 précisions :
- je te suggère d'utiliser les fonctions urlencode() et urldecode() pour passer ton url en paramètre afin que les caractères spéciaux soient transmis correctement : http://php.net/urlencode
- Par ailleurs, ton script n'est absolument pas sécurisé donc il ne faut sous aucun prétexte qu'il soit mis en ligne. En effet, avec un tel code, n'importe qui pourrait récupérer n'importe quel fichier de ton serveur ce qui est très très problématique.