J'ai une galerie d'images que j'ai créée en lisant le contenu d'un répertoire. Maintenant tout de suite j'ai remarqué un problème quand il y avait un "+" dans le nom de fichier. Comme "glas + door.jpg" casserait. J'ai donc pensé que c'était un problème d'encodage et puisque c'était seulement le signe "+" je pensais que remplacer le "+" par "% 2b" résoudrait le problème. Localement le problème a été résolu mais quand je l'ai téléchargé sur mon hôte, j'ai remarqué que remplacer le signe "+" par "% 2b" ne fonctionnait plus.Asp.net: encodage de chemin
Voilà où j'ai commencé à regarder les possibilités d'encodage d'ASP.NET. J'ai trouvé Server.UrlEncode
et Server.UrlPathEncode
. Cela m'a donné des résultats mitigés comme des images qui fonctionnaient auparavant ne fonctionneraient plus.
Alors, quelle est la bonne façon d'encoder un chemin et pourquoi le remplacement a-t-il fonctionné sur mon PC mais pas dans mon environnement d'hébergement?
public List<fileInfo> RenderImages()
{
List<fileInfo> RenderImages = new List<fileInfo>();
var Images = GetImages();
if (Images != null)
{
foreach (var Image in Images)
{
string FullPath = Path + FolderName + "/" + Image.Name.Replace("+", "%2b");
string ImageName = Image.Name.Replace(Image.Extension, string.Empty);
RenderImages.Add(new fileInfo { path = FullPath, name = ImageName });
}
}
return RenderImages;
}
public class fileInfo
{
public string path { get; set; }
public string name { get; set; }
}
La fonction GetImages()
obtient jpg, gif et png FileInfo
s à partir d'un certain répertoire. Si nécessaire, je peux également poster cette partie du code.
Si cela aide, here vous pouvez voir comment les images se brisent. C'est avec Replace("+", "%2b")
.
Merci d'avance.
Server.UrlEncode est le chemin à parcourir. Question: avez-vous besoin du chemin complet de l'image à attribuer aux attributs src de l'image? RenderImages.Add (nouveau FileInfo {path = "/" + Server.UrlEncode (Nom du dossier + "/" + Image.Name), name = ImageName}); mieux travailler? –
Oui, j'ai besoin du chemin complet. J'ai essayé d'encoder seulement le nom de fichier et image.name et cela semble aussi fonctionner localement mais sur mon hôte il casse toutes les images. – Pickels