我有一個圖片庫,我通過閱讀目錄內的內容創建。現在馬上我注意到文件名中有一個「+」的問題。就像「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});工作更好? – 2009-09-14 22:52:12
是的,我需要完整的路徑。我試着編碼只有文件夾名稱和image.name,這似乎也在本地工作,但在我的主機它打破了所有的圖像。 – Pickels 2009-09-14 23:12:18