디렉토리 안에있는 내용을 읽음으로써 내가 만든 이미지 갤러리가 있습니다. 지금 당장 나는 파일 이름에 "+"가있을 때 문제를 발견했다. "glas + door.jpg"와 같이 깨지기 쉽습니다. 그래서 인코딩 문제라고 생각하고 "+"기호를 "% 2b"로 바꾸면 문제가 해결 될 것이라고 생각했습니다. 로컬에서는 문제가 해결되었지만 호스트에 업로드했을 때 "+"기호를 "% 2b"로 교체하는 것이 더 이상 도움이되지 않음을 알았습니다.Asp.net : 경로 인코딩
그래서 여기서 ASP.NET의 인코딩 가능성을 살펴 보았습니다. 나는 Server.UrlEncode
과 Server.UrlPathEncode
을 발견했다. 이것은 이전에 작동했던 이미지처럼 더 이상 작동하지 않는 몇 가지 혼합 된 결과를주었습니다.
경로를 인코딩하는 올바른 방법은 무엇이며 대체 트릭은 내 PC에서 작동하지만 내 호스팅 환경에서는 작동하지 않는 이유는 무엇입니까?
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
의를 가져옵니다. 필요한 경우 코드의 해당 부분도 게시 할 수 있습니다.
도움이된다면, here 이미지가 어떻게 깨 졌는지 확인할 수 있습니다. 이것은 Replace("+", "%2b")
입니다.
미리 감사드립니다.
Server.UrlEncode는 방법입니다. 질문 : 이미지 src 속성에 할당 할 이미지의 전체 경로가 필요합니까? RenderImages.Add (new FileInfo {path = "/"+ Server.UrlEncode (FolderName + "/"+ Image.Name), name = ImageName}); 더 잘 작동합니까? –
네, 전체 경로가 필요합니다. 난 단지 foldername과 image.name 인코딩 시도하고 또한 로컬로 작동하지만 내 호스트에서 모든 이미지가 손상된 것 같습니다. – Pickels