我有一个通过读取目录中的内容创建的图片库。现在,当文件名中有一个“+”时,我立即注意到了一个问题。就像“glas + door.jpg”会坏掉。所以我认为这是一个编码问题,因为它只是“+”号,我认为用“%2b”替换“+”可以解决问题。本地问题已解决,但当我将其上传到主机时,我注意到用“%2b”替换“+”号不再起作用。
所以这就是我开始研究 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
如果需要,我也可以发布那部分代码。
如果有帮助,您可以在此处查看图像如何损坏。这是与Replace("+", "%2b")
.
提前致谢。