2010-10-12 4 views
0
function openFile(file, object) { 
    var extension = file.substr((file.lastIndexOf('.') +1)); 

    var fileName = file.substr((file.lastIndexOf('/') +1), (file.length - (file.lastIndexOf('/') +1))-4); 


    object.append('<img class="theimage" src="" alt="icon"/>'); 
    object.append('<span class="thefile"></span>'); 


    switch(extension) { 

     case 'ppt': 
      object.find('img').attr('src', 'PowerPoint-icon.png'); 
     break; 
     case 'pdf': 
      object.find('img').attr('src', 'pdficon_large.gif'); 
     break; 
     case 'txt': 
      object.find('img').attr('src', 'txt_icon.png'); 
     break; 
     default: 
      alert('error'); 
    } 

    object.find('span.thefile').text(fileName); 

}; 

Cette fonction s'exécute correctement mais lorsque je l'ajoute au modèle cms de mon école, elle ajoute% 20 à tous les espaces de fileName.Pourquoi ajoute-t-il% 20 aux espaces de mes variables javascript

Pensez-vous qu'ils ont leur propre fonction qui fait cela? A quoi cela servirait il? Pour la sécurité?

Répondre

2

%20 est le codage d'URL standard pour les espaces. Quelle que soit la fonction traitée, les espaces pensent qu'ils doivent être codés pour être utilisés dans une URL.

Quant à savoir pourquoi c'est fait, ce n'est pas exactement pour la sécurité. Tous les systèmes ne gèrent pas bien les espaces; cela aide dans ces cas, donc il est considéré comme plus sûr d'encoder des espaces URL (entre autres choses). Pour toutes les autres informations, voir RFC 3986 s2.1 et s2.4

+0

quelle serait l'expression régulière pour supprimer le% 20. Im prenant le nom de lien du chemin d'URL, c'est pourquoi je veux m'en débarrasser. – Adam

+0

Vous n'avez pas besoin d'une expression régulière pour cela, vous avez juste besoin de décoder l'URL. Il existe de nombreuses implémentations telles que http://www.webtoolkit.info/javascript-url-decode-encode.html. Choisissez-en un que vous aimez et utilisez-le. – Sorpigal

Questions connexes