ASP.NET MVC 远程请求图片 转化成BASE64然后通过HTTP输出流显示

该博客探讨了如何通过HTTP请求获取远程图片并处理成Base64格式,以解决反盗链问题。提供了C#代码示例,展示了如何进行请求、转换以及将Base64数据直接返回给前端展示。同时,提到了在需要处理图片的情况下,如何将Base64数据转回图片流并直接输出到HTTP响应中,避免了额外的文件写入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

远程请求图片,为什么会出现这个问题呢? 因为个别站有反盗链,通过远程HTTP请求可以破解!

      public static string HttpRequestGetImageBase64(string Url, int TimeOut)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Url);
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "Get";
            request.Timeout = TimeOut;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            MemoryStream memoryStream = new MemoryStream();
            responseStream.CopyTo(memoryStream);
            byte[] buff = new byte[memoryStream.Length];
            memoryStream.Position = 0;
            memoryStream.Read(buff, 0, (int)memoryStream.Length);
            memoryStream.Close();
            return Convert.ToBase64String(buff);
        }
        catch (Exception ex)
        {
            return ex.Message;
        }
    };

调用 HttpRequestGetImageBase64(“http://www.qq.com/iamge/1.jpg”, 5000,);

然后 在返回头部加上 “data:image/jpeg;base64,”, 返回的就是完整的base64 格式体数据,

可以通过 jquery 设置 img src = "返回Base64数据"即可。

但是有时候有这样的需求,就是我们要下载远程图片,处理后再让前台显示,那么这里就需要把图

片的BASE64数据通过http 流的形式返回给前台,当然写入文件然后给前台地址可行,但是太麻烦。

这里就要注意了,

前台 action 就可以通过访问这个action获取到图片,

byte[] bytes = Convert.FromBase64String(ImageBaseData);

MemoryStream Ms = new MemoryStream(bytes);

HttpContext.Response.ContentType = “image/jpeg”;

HttpContext.Response.BinaryWrite(Ms.ToArray());

当然如果不对图片数据处理,直接将

Stream responseStream = response.GetResponseStream(); 返回给http输出流就行了。

主要在中间对base64数据处理,所以做了两次转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值