public string GetFilenameFromWebServer(DownloadLinkEnum downloadEnum) { try { var request = WebRequest.Create(GetEnumDescription(downloadEnum)); var response = request.GetResponse(); var contentDisposition = response.Headers["Content-Disposition"]; const string contentFileNamePortion = "filename="; var fileNameStartIndex = contentDisposition.IndexOf(contentFileNamePortion, StringComparison.InvariantCulture) + contentFileNamePortion.Length; var originalFileNameLength = contentDisposition.Length - fileNameStartIndex; var originalFileName = contentDisposition.Substring(fileNameStartIndex, originalFileNameLength); char[] trims = { '"' }; var insert_ = originalFileName.Replace(" ", "_"); var removefront = insert_.TrimStart(trims); originalFileName = removefront.TrimEnd(trims); return(originalFileName); } catch (NullReferenceException) { return(downloadEnum.ToString() + ".exe"); } catch (WebException) { return(downloadEnum.ToString()); } }
string GetEnumDescription(DownloadLinkEnum enumValue) { var type = typeof(DownloadLinkEnum); var memInfo = type.GetMember(enumValue.ToString()); var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); return(((DescriptionAttribute)attributes[0]).Description); }
private void DownloadFile(DownloadLinkEnum downloadEnum) { Uri url = new Uri(GetEnumDescription(downloadEnum)); var downloadpath = FilePathBox.Text = DefaultPathLocation + "\\" + GetFilenameFromWebServer(downloadEnum); webClient.DownloadFileAsync(url, downloadpath); currentDownload = downloadEnum; }