【问题标题】:Image isn't been shown despite a correct path尽管路径正确,但未显示图像
【发布时间】:2013-07-30 20:08:52
【问题描述】:

我正在动态创建图像,并从 sql server 分配路径,但服务器上的图像没有显示。

pic_list 包含所有图像的路径如下:

~/Member_Data/039658893/images/one.jpg

我的代码:

for (int j=0; j<pic_num; j++)
            {

                TableCell c1 = new TableCell();


                    ImageButton img = new ImageButton();
                    img.ID = temp.ToString();
                    img.ImageUrl = Server.MapPath(pic_list[temp]);
                    img.CssClass = "img_bg" ;
                    img.Click += new ImageClickEventHandler(delete_pic);

                    c1.Controls.Add(img);


                r1.Controls.Add(c1);

图像未显示,当我在 chrome 中检查它们时,我得到以下路径:

当我点击超链接时,我会进入此页面:

我检查了,图像文件存在于服务器上。

路径应该怎么写?

【问题讨论】:

    标签: c# asp.net image path filepath


    【解决方案1】:

    C:\inetpub\wwwRoot\...\efi5.jpeg 路径是完整的文件系统路径,而不是应该在 Web 服务器上使用的路径。这些路径在技术上是正确的,但不是在您想要的上下文中(Web 服务器)。您需要从所有链接中删除 Web 服务器根目录的路径 C:\inetpub\wwwRoot\,并留下 igroup20\test2\Member_data\039658893\images\efi5.jpg。然后,您将拥有一个相对于 Web 服务器根目录的路径。

    请记住,它们是相对于 Web 服务器根目录的,您需要知道它们是从哪个目录调用的。所以我建议你建立绝对链接,例如:

    <a href="http://www.domain.com/igroup20/test2/Member_data/039658893/images/efi5.jpg">
    

    而不仅仅是

    <a href="igroup20/test2/Member_data/039658893/images/efi5.jpg">
    

    【讨论】:

    • 我该怎么做?我在 sql server 中的路径是这种格式:~/Member_data/039658893/images/efi5.jpg 它给了我一个href:“proj.ruppin.ac.il/igroup20/test2/~/Member_data/039658893/images/…
    • 首先你不需要Server.MapPath函数,使用你有的路径即可。如果您的所有图像都位于igroup20\test2\ 目录中并且从那里调用文件,您只需从路径中删除前导~/。这样你会得到Member_data/039658893/images/efi5.jpg,当你用那个路径创建一个HTML链接时,它应该会打开http://proj.ruppin.ac.il/igroup20/test2/Member_data/039658893/images/efi5.jpg,这是可行的。
    • 我做到了,它可以工作,但是当我上传新文件并尝试显示它们时,它会将我带到一个页面,并显示“HTTP 错误 401.3 - 未经授权您无权查看此目录或页面由于 Web 服务器上此资源的访问控制列表 (ACL) 配置或加密设置。
    • 我不认为这是一个相关的错误。你能给我们一个你得到那个错误的 URL 的路径吗?如果它是文件所在目录的路径,则获取该路径是正常错误。
    • 这是浏览器中的路径:“proj.ruppin.ac.il/igroup20/test2/Member_Data/039658893/images/…”所以很奇怪
    【解决方案2】:

    Server.MapPath 为您提供服务器上文件的物理路径。

    您需要图像的路径,因为浏览器会看到它。像"/Member_Data/039658893/images/one.jpg" 这样的东西就是你要找的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多