Un nom de fichier ne peut pas contenir le caractère /
sous Windows (ou la plupart des autres systèmes d'exploitation), vous ne pourrez donc pas empêcher la conversion de ce fichier. #
est laissé seul par la plupart des navigateurs, l'intrus étant IE.
Content-Disposition
Les noms de fichiers sont un peu limités. Les caractères non-ASCII ne sont pas fiables et l'échappement correct selon le RFC ne fonctionne pas. Si vous voulez obtenir des caractères Unicode dans un nom de fichier de téléchargement par défaut - ou certains autres caractères de ponctuation incluant #
dans IE - vous devez encoder l'URL et l'inclure en tant que partie finale du chemin, en omettant le nom de fichier Content-Disposition. par exemple:
http://www.example.com/myscript.aspx/foo%23bar.xls
myscript.aspx.
response.AddHeader("Content-Disposition", "attachment");
(Vous ne pouvez toujours pas inclure dans /
un nom de fichier ainsi que les serveurs Web ont tendance à bloquer toutes les URL avec% 2F Dans tous les cas, comme ci-dessus, vous ne seriez pas en mesure de l'enregistrer avec un /
dans le nom de fichier de toute façon.)
Merci Bobince !! UrlEncode fonctionne très bien avec "#". Merci beaucoup! – Lakshminarayanan
Ah, 'UrlEncode' de .NET n'est peut-être pas la bonne chose pour un caractère d'espace, cependant: il va l'encoder à' + 'au lieu de'% 20', ce qui n'est pas tout à fait correct pour les composants path. [Arrière-plan ici] (http://stackoverflow.com/q/2678551/18936). C'est un peu dommage qu'il n'y ait pas de méthode d'encodage d'URL non formel dans .NET, mais vous pouvez le corriger manuellement en remplaçant '+' par '% 20' après l'encodage. – bobince
Oui Bobince, j'ai aussi connu le même problème de "+" pour l'espace. Puis est allé avec le remplacement manuel. Pensé de répondre à votre suggestion précédente, mais a reçu les commentaires de votre part :) Merci encore – Lakshminarayanan