我有一个网站,用户上传文件,文件名等保存到DB。然后将这些文件显示在数据列表中。我正试图让这个数据显示不同的图像(图标)来表示文件类型。
这是我的代码。调频。getIcon是一个自定义函数,它将服务器上的完整文件路径返回到表示文件类型的适当图像。
当我调试代码时,我可以验证图像确实存在于imgFile路径
Private Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound
Dim docName As Label = e.Item.FindControl("fileNameLabel")
Dim docImage As Image = e.Item.FindControl("image1")
Dim imgFile As String = fm.getIcon(My.Computer.FileSystem.GetFileInfo(docName.Text).Extension)
docImage.ImageUrl = imgFile
End Sub
我的问题是图像没有加载。如果我用硬编码的路径替换imgFile到一个图像,它工作得很好。
请尝试一下。
//第一个方法
string fileLocation = Server.MapPath("~/Images/MyFile.jpg");
FileInfo fileInfo = new FileInfo(fileLocation);
string fileExtension = fileInfo.Extension;
//第二个方法
System.IO.Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")); // Result: .jpg
//你的get图标方法
docImage.ImageUrl = "~/Icons/" +
fm.getIcon(Path.GetExtension(Server.MapPath("~/Images/MyFile.jpg")));
public string getIcon(string extension)
{
switch (extension.ToLower())
{
case ".asa":
return "asa.png";
case ".asax":
return "asax.png";
case ".ascx":
return "ascx.png";
default:
return "unknown.png";
}
}
您应该确认fm.getIcon
实际上返回的是图标图像的有效URL,而不是机器级别的文件路径。您应该能够获取fm.getIcon
的输出并将其粘贴到浏览器中并看到图像。文件权限可能是一个问题,为网站服务的IIS进程需要能够读取图标图像文件。