2

我将图像文件放在一台服务器上,将应用程序放在另一台服务器上。

我想访问该图像,下面是我编写的代码:

在 default.aspx 上,我有

 <asp:Image ID="Image1" runat="server"  ImageUrl= "GetImage.aspx?imgName=MyImage.jpg" />

在 GetImage.aspx 上,我在 page_load 上编写了以下代码

 protected void Page_Load(object sender, EventArgs e)
    {
        // Changing the page's content type to indicate the page is returning an image
        Response.ContentType = "image/jpg";
        var imageName = Request.QueryString["imgName"];
        var path = "//SERVER/FOLDER/" + imageName;


        if ((string.IsNullOrEmpty(imageName) == false))
        {
            // Retrieving the image
            System.Drawing.Image fullSizeImg;
            fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(path));
            // Writing the image directly to the output stream
            fullSizeImg.Save(Response.OutputStream, ImageFormat.Jpeg);
            // Cleaning up the image
            fullSizeImg.Dispose();
        }
    }

但我在

fullSizeImg = System.Drawing.Image.FromFile(Server.MapPath(path));

请让我知道我在哪里不正确。除了 Server.MapPath 之外,我还需要其他任何东西吗?因为我的图像在其他服务器上。

编辑

  • 我的电脑里有图片文件夹
  • 我在其他计算机 [相同网络] 中创建了一个 Web 应用程序,部署在 IIS 中,图像显示正确。使用 http://10.67.XX.XX/websiteName/Default.aspx之类的路径
  • 但是当我尝试从我的计算机或任何其他计算机访问相同的内容时,我无法看到图像。
4

2 回答 2

4

你不应该使用Server.MapPath. 这用于将站点下的虚拟路径映射到文件系统下的物理路径。如果文件存在于另一台服务器上,直接按名称访问即可,无需Server.MapPath.

于 2011-11-01T18:14:16.997 回答
0

上面的答案不正确,因为图像位于单独的服务器上。

所以 System.Images 不会没有图像在哪里。

其次,您必须将 server.Mappath 用于系统图像,它需要一个 windows 路径,即 c:\blah\blah\whatever.jpg。您将需要使用 \\server\C$\folder\image.jpg 这适用于 system.image.FromFile

也节省你也可以利用这个。

干杯

于 2015-12-04T10:48:44.703 回答