【问题标题】:How is an image served from a URL with an ASPX extension?如何从带有 ASPX 扩展名的 URL 提供图像?
【发布时间】:2011-06-15 18:59:45
【问题描述】:

有人能告诉我如何创建这样的网址

例如,如果您看到网址

http://office.microsoft.com/global/images/default.aspx?assetid=ZA103873861033

您将重定向到图像..

我的问题是,虽然这个 url 是一个图像..它的扩展名是 aspx..这怎么可能。 如何创建这样的网址

谢谢

【问题讨论】:

  • 我同意..但想不出更好的标题..sry

标签: c# asp.net urlrewriter


【解决方案1】:

除了所有其他答案之外,他们可能正在对图像文件执行Server.Transfer()(这样您就不会在客户端看到它)。这仍然意味着响应标头被设置为适当的 MIME 类型,但这也意味着图像不一定来自数据库。此技术可用于隐藏实际的图像 URL,以防止盗链。

【讨论】:

    【解决方案2】:

    文件扩展名在 WWW 上没有任何意义。正确描述特定 URL 内容的是 content-type/MIME-type。当在交付主要 HTTP 有效负载之前请求 URL 时,这将在 HTTP header 中交付。其他答案描述了如何在 ASP.NET 中正确设置它。

    【讨论】:

      【解决方案3】:

      这是显示在数据库中存储为二进制对象的图像的常用方法。可以在here 找到一个教程。

      本质上,他们正在做的是使用aspx 页面来接受告诉他们从数据库中获取什么图像的URL 参数。然后在响应中清除所有输出和标题,设置图像的标题,将二进制数据写入响应流,然后关闭响应流。

      因此,它并不是真正将您“重定向”到图像。请求的“页面”结果是响应中的图像资源。

      【讨论】:

      • 好吧,在我的情况下,我不会检索图像的二进制数据,而是从 DB 中检索图像 url……所以我需要将图像转换为二进制然后继续……或者如何……任何简单的方法!
      • @sajad:无论如何,这通常是一个更好的设置,因为数据库通常不是存储文件的好地方,而文件系统是。但是,如果是这种情况,那么您最好不要使用这样的资源页面,而是在生成托管页面/视图的代码中从数据库中获取图像的 URL,并将它们写入呈现的 HTML 输出。
      【解决方案4】:

      通过在服务器的响应中设置ContentType

        HttpContext.Response.ContentType = "image/jpeg";
      

      【讨论】:

        【解决方案5】:

        最简单的方法是添加通用处理程序 *.ashx,在 ashx 文件中,您将拥有可以获取查询字符串和操作响应的代码,例如。 Response.WriteFile(...)

        【讨论】:

          猜你喜欢
          • 2011-05-06
          • 1970-01-01
          • 1970-01-01
          • 2012-08-12
          • 1970-01-01
          • 2013-05-20
          • 1970-01-01
          • 2021-02-02
          • 2019-06-26
          相关资源
          最近更新 更多