【问题标题】:How to display image stored on the network in asp.net (c#)如何在asp.net(c#)中显示存储在网络上的图像
【发布时间】:2012-04-04 01:55:01
【问题描述】:

如何在asp.net中显示存储在网络上的图像(使用c#)。我希望 img src 是下面给出的:

\\pgapp\folder\image.jpg,其中 pgapp 是网络上的共享驱动器。

我正在使用这些代码,但它没有在网页上显示图像。

originalImage2.ImageUrl=@"\\pgapp\folder\image.jpg";

originalImage2.Attributes["src"]=ResolveUrl(@"\\pgapp\folder\image.jpg");

<div ID="imgContainer" runat="server" style="width: 400px; height: 400px;  overflow:auto; border: solid 1px black;
                    padding: 10px; margin-bottom: 5px;" >

                    &nbsp;<asp:Image ID="originalImage2" runat="server" />
                </div>

【问题讨论】:

  • 调试时图片src指向哪里?

标签: c# asp.net


【解决方案1】:

你会遇到两个问题:

  • 浏览器通常不能访问服务器共享(除非它在同一个网络上)。您需要以某种方式通过您的网站公开图像,以便它像 http://myserver/image/image1.jpg 一样可见
  • "NTLM one hop" - 如果您开始通过服务器渲染图像,您的服务器将无法从远程服务器读取文件。您只需要验证您是否有问题并阅读相关内容即可。

【讨论】:

    【解决方案2】:

    要在用户的网络浏览器中显示存储在网络上的图像,请执行以下操作:

    将图像转换为对应的 base64 并显示:

    // PhotoId is the network file path and name.
    string photoId = "\\Photos\2015-May\390828d1-8f20-4fe9-9287-13d03894e9c0.jpg"
    
    // Call to display the networked images.
    lbl_images.Text += "<img src='" + this.PhotoBase64ImgSrc(photoId) + "' height='60px' width='60px' alt='photo' />";
    
    // Supporting function that converts an image to base64.
    protected string PhotoBase64ImgSrc(string fileNameandPath)
    {
        byte[] byteArray = File.ReadAllBytes(fileNameandPath);
        string base64 = Convert.ToBase64String(byteArray);
    
        return string.Format("data:image/gif;base64,{0}", base64);
    }
    

    【讨论】:

    • 如何在 WebForms 中显示图像?
    • 这不起作用,因为出于安全原因,现代浏览器不允许访问网站缓存之外的文件。因此,如果它是C:\outsidecache\file.jpg,它将无法正常工作。我尝试了\\sharedfolder\file.jpgfile://sharedfolder/file.jpg,但它不起作用。
    • @sojim2 我删除了我的评论,因为它是错误的...我说的是 windowsforms 而不是 webforms...我在 webforms 应用程序中使用它...您必须在 IIS 下运行应用程序池可以访问网络位置的帐户...然后应用程序池可以读取图像文件,将其转换为 base64 并将其作为字符串发送到浏览器...然后像
    • 我找到了一个更简单的方法,虚拟目录!
    • 那么您不介意您的图片向公众开放吗?为什么不把它们放在网站本身的文件夹中? (如果只有一个网站可以访问图像)。
    【解决方案3】:

    如果要显示存储在网络路径中的图像,请在 IIS 中更改以下设置,

    1. 导航到 IIS。
    2. 导航到站点文件夹中的网站。
    3. 选择应用程序网站并导航到右侧的操作菜单并单击查看虚拟目录。
    4. 单击添加虚拟目录并将别名指定为“图像”,将物理路径指定为“网络驱动器路径”。
    5. 测试设置并保存。
    6. 刷新应用程序池并测试图像是否正在呈现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2022-01-19
      • 2021-02-02
      • 2010-10-26
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多