Comment puis-je encoder un nom de fichier pour le télécharger?
Lorsque le nom de fichier est "Algunas MARCAS que nos acompañan" ASP.NET MVC soulever une System.FormatException
lorsque j'essaie de télécharger ce fichier. Mais si le nom de fichier est "Asistente de Gerencia Comercial" il n'est pas.
Je suppose que c'est parce que quelque chose lié à UTF-8
d'encodage, mais je ne sais pas comment coder cette chaîne.
Si je suis à droite, comment puis-je encoder la chaîne dans UTF-8
encodage? Si je ne suis pas de droite, quel est mon problème?
Comment êtes-vous d'envoyer le fichier à l'utilisateur? À l'aide de
Oui, je suis en utilisant FileResult.
La chose étrange est que
System.Web.Mvc.FileResult
? Vous pouvez poster votre code?Oui, je suis en utilisant FileResult.
La chose étrange est que
System.Web.Mvc.FileResult
utilise en interne System.Net.Mime.ContentDisposition
pour générer l'en-tête qu'elle ajoute à la réponse. Je me serais attendu à cette classe à être en mesure de gérer tout ce codage de la chaîne est nécessaire pour faire ce travail.OriginalL'auteur eKek0 | 2009-10-21
Vous devez vous connecter pour publier un commentaire.
Je encoder nom de fichier comme ceci pour le téléchargement,
REMARQUE: Pour la solution correcte à l'époque moderne, voir RFC6266: tools.ietf.org/html/rfc6266
OriginalL'auteur ZZ Coder
Basé sur ZZ Codeur réponse, et parce que je suis en utilisant FileResult, j'ai décidé de coder le nom de fichier comme:
OriginalL'auteur eKek0
Ce problème est connu depuis des années. Pour autant que je sache, il n'est actuellement pas interopérables façon de le faire, donc la réponse est à seulement prennent en charge un ensemble de navigateurs, ou à faire de l'Agent Utilisateur en reniflant.
Des cas de Test et les liens sur: http://greenbytes.de/tech/tc2231/
OriginalL'auteur Julian Reschke
Récemment, j'ai lutté avec cela un peu, ayant beaucoup de potentiel langues utilisées pour les noms de fichier (le Chinois est bon pour le test). Voici quelque chose de proche de ce que j'ai (d'autres détails de mise en œuvre exclue):
OriginalL'auteur John Fisher
Aussi: HttpUtility considérées comme nuisibles:
http://serialseb.blogspot.com/2008/03/httputilityurlencode-considered-harmful.html
Je vais juste punt et remplacer "" par "_" et l'appeler un jour =)
OriginalL'auteur TJB
notez que l'utilisation de l'encodage UTF remplace les espaces dans le nom de fichier dans le"+", soit en utilisant les codes suivants produisent les mêmes résultats:
OriginalL'auteur ashkan
au lieu d'utiliser httpUtility qui remplace les espaces dans le nom de fichier avec un "+" à l'aide du code suivant résoudre le problème:
veuillez noter que si vous récupérer le nom de fichier de données que vous pouvez avoir besoin de garniture d'abord le nom!
vous devez également ajouter les lignes de code suivantes à l'avance:
OriginalL'auteur ashkan