使用ASP.Net中的字符串生成器显示图像

时间:2014-09-02 05:48:08

标签: asp.net stringbuilder

我需要使用字符串构建器在网页中显示图像。我知道通过这个片段sb.Append("<a href=\"http://www.mypage.com\"><img src=\"bla.jpg\" /></a>");我可以显示一个图像。我的问题是图像路径是动态生成的,并且位于string变量中。

以下是我尝试的代码:

 Dim table_builder As New StringBuilder
 table_builder.Append("<table  width=100%>")
 Dim filePath As String = Server.MapPath("../attachments/") & fileName 
 // file name is the name of the file fetching from the database
 table_builder.Append("<tr>")
 table_builder.Append("<td>")
 table_builder.Append("<img src='" + filePath  + "'/>")
 table_builder.Append("</td>")
 table_builder.Append("</tr>")

但是它没有通过执行代码来显示图像

table_builder.Append("</table>")
attach.innerHTML = table_builder.ToString()

2 个答案:

答案 0 :(得分:1)

Server.MapPath("../attachments/")会映射物理路径,这就是图像未显示的原因。所以你可以编辑你的代码:

 table_builder.Append("<table  width=100%>")
 table_builder.Append("<tr>")
 table_builder.Append("<td>")
 table_builder.Append("<img src='" + "../attachments/" & fileName + "'/>")
 table_builder.Append("</td>")
 table_builder.Append("</tr>")
 table_builder.Append("</table>")
 attach.innerHTML = table_builder.ToString()

作为参考,splattne的The Answer说:

Server.MapPath指定映射到物理目录的相对或虚拟路径。

  • Server.MapPath(&#34;。&#34;)返回正在执行的文件的当前物理目录(例如aspx)
  • Server.MapPath(&#34; ..&#34;)返回父目录
  • Server.MapPath(&#34;〜&#34;)返回应用程序根目录的物理路径
  • Server.MapPath(&#34; /&#34;)返回域名根目录的物理路径(不一定与应用程序的根目录相同)

答案 1 :(得分:0)

Server.MapPath将返回服务器上文件的PHYSICAL路径。您当然不希望这样,因为无法从客户端访问该文件。 你应该使用相对路径

like Dim filePath As String = ("/attachments/") & fileName

该文件应该可以从客户端访问

http://domainname.com/attachments/filename

在路径中使用../时也要小心。您最终可能会在根路径下降一级,但可能无法从客户端访问

通常可用于始终从站点根

启动路径