zoukankan      html  css  js  c++  java
  • c#实现远程图片下载

    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
        }
  • 相关阅读:
    遍历一个枚举类型
    ASP.NET:C#中时间格式的转换
    DataAdapter去批量更新数据的FAQ
    .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类 (第2版) (C# DIY HttpWebClient) 收藏
    如何使数据库中取出的数据保持原有格式
    如何获取控制台应用程序自己的文件名
    2008将倒掉一大部分的工厂和贸易公司
    组六对半分组组合投资方案(36789)
    重又归孑然一身
    善于总结
  • 原文地址:https://www.cnblogs.com/guanjie20/p/2790460.html
Copyright © 2011-2022 走看看