// server side site suck / spidery thing to grab a remote image and save it locally public static string DownloadImageFromRemoteSiteAndSaveToDisk(string fullImageUrl) { var folderName = "Attachments\\RemoteImages\\" + Fmt.YearMonth(DateTime.Today) + "\\"; var path = folderName + FileSystem.GetUniqueFilename(folderName, fullImageUrl.Replace("/", "\\").Substring(fullImageUrl.LastIndexOf("/"))); FileSystem.CreateFolder(Web.MapPath("~\\" + folderName)); byte[] imageBytes; HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(fullImageUrl); WebResponse imageResponse = imageRequest.GetResponse(); Stream responseStream = imageResponse.GetResponseStream(); using (BinaryReader br = new BinaryReader(responseStream)) { //imageBytes = br.ReadBytes(500000); //jn replaced this const int bufferSize = 4096; using (var ms = new MemoryStream()) { byte[] buffer = new byte[bufferSize]; int count; while ((count = br.Read(buffer, 0, buffer.Length)) != 0) { ms.Write(buffer, 0, count); } imageBytes = ms.ToArray(); } br.Close(); } responseStream.Close(); imageResponse.Close(); FileStream fs = new FileStream(Web.MapPath("~\\" + path), FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); try { bw.Write(imageBytes); } finally { fs.Close(); bw.Close(); } var result = Web.BaseUrl + path.Replace("\\", "/"); return(result); }