2010-10-21 12 views
2

Mon navigateur affiche URL avec le nom de fichier en tant quedécodage d'URL ne fonctionne pas comme prévu

 
http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0%2C1%25.pdf 

Actual Nom du fichier est 204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf

Après urldecode, il donne un mauvais nom de fichier comme http://www.example.com/pdf/204177_20090604_Chloorhexidine_DCB_oogdruppels_0,1%.pdf

Mise à jour:

Initialement, je pensais que son problème de l'URL Decode, mais des fichiers comme le nom 204153_20090605_Aluminiumacetotartraat_DCB_oordruppels_1,2%.pdf lors du rendu dans le navigateur lance une mauvaise demande. J'utilise le framwork Kohana 3. Est-ce lié au serveur?

+2

Il doit être '0% 2C5% 25' avec' 5' au lieu de '1'. – Gumbo

+0

L'URL que vous avez fournie indique effectivement "0,1%" et non "0,5%". – Spudley

Répondre

4
$url = 'http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf'; 
$encode = urlencode($url); 
$decode = urldecode($encode); 

echo $url."<br />"; 
echo $encode."<br />"; 
echo $decode."<br />"; 

// outputs 
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf 
http%3A%2F%2F204160_20090604_Atropine_DCB_oogdruppels_0%2C5%25.pdf 
http://204160_20090604_Atropine_DCB_oogdruppels_0,5%.pdf 

Tout va bien. Votre erreur est ailleurs.

+0

Oui, vous avez raison, j'ai aussi testé. fonctionne comme prévu comme indiqué dans codespec ci-dessus. Peut-être un problème de serveur. Est-ce le cas? –

+0

@Asif par votre description Je dirais probablement que cela a quelque chose à voir avec la façon dont Kohana traite les URL. Je ne peux pas en être sûr car je ne l'ai jamais utilisé mais CI (Kohana's in CI) a ses tweaks. Vous devriez probablement déboguer sur le fichier 'index.php' principal avant que les contrôleurs et les nettoyeurs soient appelés. – Frankie

+0

@ Frankie: J'ai essayé de déboguer index.php. Mais après avoir cliqué sur le lien, l'une ou l'autre demande ne va pas à index.php ou à sa classe de gestionnaire de requêtes. Pourriez-vous s'il vous plaît me donner une référence liée à CI où nous pouvons modifier la demande? –

2

Vous êtes en train de regarder deux fichiers différents.

Il n'est pas possible d'urlencoder 204160_20090604_Atropine_DCB_oogdruppels_ en 204177_20090604_Chloorhexidine_DCB_oogdruppels_, l'encodage ne change pas les caractères alphabétiques.

L'erreur est très probablement dans le code qui crée la liste de fichiers et génère les liens; le mappage entre les titres de liens et les noms de fichiers semble être foiré.

+0

Bien repéré. Mais c'est plutôt un commentaire. – Gumbo

0

cela vous donnera le nom exact du fichier m en utilisant C#

Server.UrlDecode ("http://www.example.com/pdf/204160_20090604_Atropine_DCB_oogdruppels_0,5%25.pdf")

, (virgule) est codée en% 2c % (pour cent) est codé en% 25 par les navigateurs

si vous utilisez Request.Url il va décoder, (virgule), mais pas% (pour cent)

Ainsi, Server.UrlDecode ("xyz") décode tous les caractères sauf% (pourcentage), y compris "% 25" dans le nom de fichier ci-dessus

+0

J'utilise PHP. –

Questions connexes