我有一个图片库,我通过阅读目录内的内容创建。现在马上我注意到文件名中有一个“+”的问题。就像“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