从其他服务器访问图像

时间:2011-11-01 18:05:07

标签: c# asp.net-4.0 server.mappath

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

我想访问该图片,在我写的代码下面:

在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
  • 但是当我试图从我的comupter或其他任何人访问它时 电脑,我无法看到图像。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

所以System.Images不会没有图像的位置。

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

同时保存你也可以利用它。

干杯