博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#实现远程图片下载
阅读量:6827 次
发布时间:2019-06-26

本文共 1732 字,大约阅读时间需要 5 分钟。

public partial class DownLoadFile : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string picName = Request.QueryString["InternalSysURL"];
            if (!String.IsNullOrEmpty(picName))
            {
                byte[] content = this.GetImageContent(picName);
                this.WriteResponse(picName, content);
            }
        }
 
        #region
        private byte[] GetImageContent(string picName)
        {
            string fileURL = GetImgUrlPrefix() + picName;
 
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(fileURL);
            request.AllowAutoRedirect = true;
 
            WebProxy proxy = new WebProxy();
            proxy.BypassProxyOnLocal = true;
            proxy.UseDefaultCredentials = true;
 
            request.Proxy = proxy;
 
            WebResponse response = request.GetResponse();
 
            using (Stream stream = response.GetResponseStream())
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    Byte[] buffer = new Byte[1024];
                    int current = 0;
                    while ((current = stream.Read(buffer, 0, buffer.Length)) != 0)
                    {
                        ms.Write(buffer, 0, current);
                    }
                    return ms.ToArray();
                }
            }
        }
 
        private void WriteResponse(string picName, byte[] content)
        {
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(picName, Encoding.Default));
            Response.AppendHeader("Content-Length", content.Length.ToString());
            Response.BinaryWrite(content);
            Response.Flush();
            Response.End();
        }
 
        private static string GetImgUrlPrefix()
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "//Pages//ItemMaintain//ImageDownLoad.xml");
            XmlNodeList nodes = xmlDoc.GetElementsByTagName("ProductImageOriginal");
            if (nodes.Count > 0)
            {
                return nodes[0].ChildNodes[0].Value;
            }
            else { return ""; }
        }
 
        #endregion
    }

转载地址:http://zyykl.baihongyu.com/

你可能感兴趣的文章
JS 中的require 和 import 区别整理
查看>>
stream& datagram socket
查看>>
vue.js 2.0开发(4)
查看>>
urb传输的代码分析【转】
查看>>
ftrace 简介【转】
查看>>
内置函数总结
查看>>
模块的查找顺序
查看>>
wpf中ListBox的选中项与ComboBox间的绑定
查看>>
web前台传参到后台出现错误
查看>>
数据库的备份和导入
查看>>
Oracle trunc()函数的用法
查看>>
col-md-*和col-sm-*
查看>>
前端开发大众手册(包括工具、网址、经验等)
查看>>
IOC容器
查看>>
“利益相关者”课堂讨论电子版
查看>>
意见总结
查看>>
servlet增删改查
查看>>
php - 中文字符串分割
查看>>
图解HTTP
查看>>
HTML - form (转)
查看>>