У меня есть галерея изображений, которую я создал, читая содержимое в каталоге. Теперь я сразу заметил проблему, когда в имени файла был знак "+". Как бы "glas + door.jpg" сломался бы. Поэтому я подумал, что это проблема кодирования, и поскольку это был только знак «+», я подумал, что замена «+» на «% 2b» решит проблему. Локально проблема была исправлена, но когда я загрузил ее на свой хост, я заметил, что замена знака «+» на «% 2b» больше не помогает.
Так что именно здесь я начал изучать возможности кодирования ASP.NET. Я нашел Server.UrlEncode
и Server.UrlPathEncode
. Это дало мне смешанные результаты, например, изображения, которые работали раньше, больше не будут работать.
Так, каков правильный способ кодирования пути и почему заменяющая "хитрость" работала на моем ПК, но не в моей среде хостинга?
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; }
}
Функция GetImages()
получает jpg, gif и png FileInfo
s из определенного каталога. При необходимости я также могу опубликовать эту часть кода.
Если это поможет, здесь вы можете увидеть, как ломаются изображения. Это с Replace("+", "%2b")
.
Заранее спасибо.