如何显示位于网络上另一台服务器上的图像(ASP.NET)

时间:2010-04-13 01:31:53

标签: asp.net tiff

我有一个位于本地服务器(MY_SERVER)上的ASP.NET站点。它所做的一件事就是拉起位于另一台服务器上的tiff文件(ANOTHER_SERVER)。每个文件的位置都存储在SQL中。我拉出这些图像,我应该显示它们。问题是:

  1. 文件未使用tiff扩展名命名(这有关系吗?)

  2. 它们根本没有显示。

  3. 我正在使用一个Image控件来显示这些图像,我不确定扩展程序是否设置是否重要(图像控件是否知道jpg和没有扩展名的tiff之间的区别?)

    我猜测图像没有显示,因为它们不在图像所在的同一服务器MY_SERVER上(ANOTHER_SERVER)。关于如何解决这个问题的任何想法?

    编辑:实际显示tiff文件非常简单:

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ContentType = "image/png";
        new Bitmap(Request.QueryString["ImagePath"]).Save(Response.OutputStream, ImageFormat.Gif);
    
    }
    

    但由于图像位于ANOTHER_SERVER上,我仍然无法访问它们。我可能只是做一个hack,我将它们复制到MY_SERVER上的本地目录,但是必须有一个简单的方法来解决这个问题。任何人吗?

3 个答案:

答案 0 :(得分:2)

  1. 无论您使用什么标签,ANOTHER_SERVER都会将图像存储在可访问互联网的位置吗?如果没有,您无法直接在互联网上提供服务。您可以尝试使用Response.WriteFile
  2. 下载文件
  3. <img />标记并非用于提供TIFF。 QuickTime插件是一个免费的TIFF查看器,但它不是很灵活。在我工作的地方,我们使用Atalasoft's dotImage,它可以动态地将TIFF转换为平铺的PNG,但它不是免费的。我找到了CodeProject article。即使您可以将图像转换为Web友好格式,服务器端代码也可能必须将文件缓存在Web服务器上。

答案 1 :(得分:1)

如果正确设置了img标记src并且可以访问服务器,则应该能够显示来自其他服务器的图像。但是,我不相信大多数浏览器都支持直接查看tiff文件。有许多可用的tiff查看器(google it)。

您也可以尝试<embed>标记,看看它是否有效(look here)。用户的计算机必须知道如何处理tiff。

答案 2 :(得分:1)

ANOTHER_SERVER上的图片是否可通过HTTP访问,或者您是否尝试使用其UNC路径在img标签中显示它们?

由于在客户端计算机上查看网页,因此必须可以从客户端的计算机访问资源(图像/ css /脚本等)的路径。即使可以从服务器访问它们,如果无法从客户端访问它们,也无法查看它们。

我怀疑在这个例子中,MY_SERVER可以访问ANOTHER_SERVER上的tiff,但是ANOTHER_SERVER的路径对访问页面的客户端没有任何意义。

您需要从磁盘读取图像并使用客户处理程序将其显示为图像,或者通过HTTP在ANOTHER_SERVER上公开图像并以这种方式引用它们(这意味着客户端必须能够直接连接到ANOTHER_SERVER)。