一张防盗链的图片如何才能不用下载就能更改Referer从而在自己的网站上直接显示?如:http://img04.taobaocdn.com/sns_album/i4/T1yAdWXgdGXXb1upjX.jpg

解决方案 »

  1.   

    通过代码根据URL读取图片存储在服务器上,然后使用
      

  2.   

    参考<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <img src="Handler.ashx?url=http://www.google.com.hk/intl/zh-CN/images/logo_cn.png" />
        </div>
        </form>
    </body>
    </html>
    [code=C#]
    <%@ WebHandler Language="C#" Class="Handler" %>
    using System;
    using System.Web;
    using System.Net;
    using System.Drawing;public class Handler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            string imgUrl = context.Request["Url"];
            if (!string.IsNullOrEmpty(imgUrl))
            {
                Uri myUri = new Uri(imgUrl);
                WebRequest webRequest = WebRequest.Create(myUri);
                WebResponse webResponse = webRequest.GetResponse();
                Bitmap myImage = new Bitmap(webResponse.GetResponseStream());            //输出到浏览器
                System.IO.MemoryStream ms = new System.IO.MemoryStream();
                myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                context.Response.ClearContent();
                context.Response.ContentType = "image/Jpeg";
                context.Response.BinaryWrite(ms.ToArray());
            }
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }}[/code]