2015-12-20 1 views
1

Je suis en train de construire quelque chose comme un nuage. Ainsi, les utilisateurs peuvent télécharger du contenu et bien sûr le télécharger à nouveau. À l'heure actuelle, la plupart fonctionnent correctement, mais j'ai remarqué qu'il y a un problème avec les fichiers qui contiennent un «#» dans leur nom.Impossible d'ouvrir le fichier dans le répertoire à cause d'un hashtag

Par exemple, le nom du fichier pourrait être: « Double Couleur # 2.jpg »

Avec la variable « $ placeoffile » Je veux établir un lien direct vers le fichier.

Mon code ressemble à ceci:

<?php 
     if (is_dir($dir)){ 
      if ($dh = opendir($dir)){ 
       while (($file = readdir($dh)) !== false){ 
        if($file != "." && $file != ".."){ 
         $extension = pathinfo($file, PATHINFO_EXTENSION); 
         $size = filesize($dir.$file); 
         $placeoffile = $dir.$file; 
         echo(" 
         <td><a href='$placeoffile'>filename: $file </a></td> 
         <td>$extension</td> 
         <td>$size</td> 
         <td>$placeoffile</td> 
         <tr>"); 
        } 
       } 
       closedir($dh); 
      } 
     } 
    ?> 

Je reçois l'erreur « Double couleur n'a pas été trouvé sur ce serveur. » donc en quelque sorte tout après le hashtag a été supprimé de la recherche et donc il n'a évidemment pas trouvé.

Essayé htmlspecialchars et preg mais je ne veux pas renommer les fichiers des utilisateurs ou montrer un message d'erreur à eux s'ils téléchargent un fichier avec un nom étrange. J'ai l'impression qu'il y a une solution facile, mais je ne la vois pas. Toute aide? Salutations :)

+0

Après avoir fait ce que vous obtenez l'erreur '" Double couleur n'a pas été trouvé sur ce serveur. "' – RiggsFolly

+0

Lorsque j'ouvre le lien. Habituellement, il me montre l'image ou les données, mais s'il y a un hashtag dans le nom, il montre seulement l'erreur –

Répondre

0

Je crois que vous devrez échapper le '#' car c'est un caractère spécial. essayer de remplacer le # avec \#

+0

Problème étant que je ne sais jamais quel nom le fichier aura parce que l'utilisateur le télécharge lui-même. Hmm –

+0

Ensuite, vous devrez ajouter une fonctionnalité de vérification de chaîne pour valider l'entrée utilisateur et la modifier si nécessaire. Cela deviendra un problème beaucoup plus important que de simples problèmes avec '#', sauf si vous implémentez la validation de chaîne. Il peut, en effet, présenter des risques de sécurité. – Redbeard011010