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

远程请求图片,为什么会出现这个问题呢? 因为个别站有反盗链,通过远程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数据处理,所以做了两次转换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值