private bool DownloadFileFromWeb(string address, string filename, bool allowredirect, bool autounzip, string password = "") { // donwloads file from a web resource try { // get web cration time DateTime webcreationtime = GetWebCreationTimeUtc(address, allowredirect); // download file and check for errors and uri identical to request // do not use WebClient.Download for this! var request = (HttpWebRequest)WebRequest.Create(address); // allow redirect 2017/12/06 DL2ALF request.AllowAutoRedirect = allowredirect; request.Method = "GET"; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { HttpStatusCode status = response.StatusCode; if ((status == HttpStatusCode.OK) && (response.ResponseUri == new Uri(address))) { using (var responseStream = response.GetResponseStream()) { using (var fileToDownload = new System.IO.FileStream(filename, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite)) { responseStream.CopyTo(fileToDownload); } } } } // set creation time if (File.Exists(filename)) { File.SetCreationTime(filename, webcreationtime); File.SetLastWriteTime(filename, webcreationtime); // unzip the file content if enabled if (autounzip && (Path.GetExtension(filename).ToLower() == ".zip")) { Console.WriteLine("[DownloadFileFromWeb] Trying to unzip downloaded file: " + filename); return(ZIP.UncompressFile(filename, 60, password)); } Console.WriteLine("[DownloadFileFromWeb] Downloading file from address finished: " + address); return(true); } } catch (Exception ex) { if (ex is WebException) { Console.WriteLine("[DownloadFileFromWeb] WebException while reading address: " + address + "\n" + "URI of orginal request=" + address + "\n" + "URI of responding server=" + "\n" + ex.ToString()); } else { Console.WriteLine("[DownloadFileFromWeb] Error while reading address: " + address + "\n" + ex.ToString()); } } return(false); }
private DOWNLOADFILESTATUS DownloadFileFromWebIfNewer(string address, string filename, bool allowredirect, bool autounzip, string password = "") { DateTime filecreationtime; DateTime webcreationtime; if (File.Exists(filename)) { filecreationtime = File.GetCreationTimeUtc(filename); } else { filecreationtime = DateTime.MinValue; } webcreationtime = GetWebCreationTimeUtc(address, allowredirect); // nothing found on web if (webcreationtime == DateTime.MinValue) { return(DOWNLOADFILESTATUS.NOTFOUND); } if (webcreationtime > filecreationtime) { // web content is newer --> download and do not unzip if (!DownloadFileFromWeb(address, filename, allowredirect, false, password)) { return(DOWNLOADFILESTATUS.ERROR); } } // unzip the file if enabled and content is a ZIP-file if (autounzip && (Path.GetExtension(filename).ToLower() == ".zip")) { if (!ZIP.UncompressFile(filename, 60, password)) { return(DOWNLOADFILESTATUS.ERROR); } } // set the return value if (webcreationtime > filecreationtime) { return(DOWNLOADFILESTATUS.NEWER); } else { return(DOWNLOADFILESTATUS.NOTNEWER); } }