0

J'ai une application web ASP.NET MVC qui inclut la possibilité pour les clients de télécharger/télécharger des documents à partir d'un dossier sur le serveur.Chemins de fichier contenant le caractère d'esperluette (&)

J'ai un problème avec les gens qui téléchargent des noms de fichiers contenant un caractère d'esperluette (peut-être d'autres caractères aussi, c'est le seul que j'ai découvert jusqu'ici).

Le résultat est que je suis en train de regarder quelque chose javascript réoriente comme:

window.location.href = 'MyController/DownloadDocument?filename=Dog & Cat.pdf'; 

qui ne fonctionne évidemment pas.

Quel est le travail le plus facile pour quelque chose comme ça? Est-il possible d'échapper l'esperluette dans la chaîne de requête?

Répondre

4

Utilisez encodeUriComponent (qui sera également résoudre le problème des espaces qui ne sont pas autorisés dans les URIs)

+0

Ok, je suis maintenant obtenir le nom de fichier comme ** Dog & Cat.pdf ** dans mon MVC manette. Existe-t-il un équivalent ASP.NET pour le côté serveur non codé? – fearofawhackplanet

+0

Ceci est un encodage HTML que vous ne devriez pas voir en JavaScript. Il semble que vous exécutiez le JS via une bibliothèque de codage HTML avant de le diffuser au navigateur. Décoder ce n'est pas la solution, il ne devrait pas être codé de cette façon en premier lieu, alors arrêtez de le faire. – Quentin

+0

Je ne l'écrase pas manuellement n'importe où, donc je ne suis pas sûr de savoir comment résoudre ce problème. – fearofawhackplanet