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 }