zoukankan      html  css  js  c++  java
  • DownLoadFile

    判断URL文件是不是在于在。

    public class FileHandler
        {
            public static bool DownLoadFile(string path, string fileName)
            {
                bool result = false;
                if (!string.IsNullOrEmpty(path))
                {
                    if (path.StartsWith("http") || path.StartsWith("https"))
                    {
                        result = InternetDownload(path, fileName);
                    }
                    else
                    {
                        result = LocalDownload(path, fileName);
                    }  
                }
                return result;
            }
    
            private static bool LocalDownload(string path, string fileName)
            {
                bool result = false;
                //Physical path  "D:InvoicePDF"
                string filePath = path + fileName;
                if (File.Exists(filePath))
                {
                    result = true;
                }
                else
                {
                    try
                    {
                        //Relative path  "~/InvoicePDF/"
                        filePath = HttpContext.Current.Server.MapPath(filePath);
                        if (File.Exists(filePath))
                        {
                            result = true;
                        }
                    }
                    catch
                    {
                        result = false;
                    }
                }
                if (result)
                {
                    try
                    {
                        //string filePath = HttpContext.Current.Server.MapPath(path + fileName); 
                        FileInfo fileInfo = new FileInfo(filePath);
                        HttpContext.Current.Response.Clear();
                        HttpContext.Current.Response.ClearContent();
                        HttpContext.Current.Response.ClearHeaders();
                        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
                        HttpContext.Current.Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                        HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary");
                        HttpContext.Current.Response.ContentType = "application/octet-stream";
                        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
                        HttpContext.Current.Response.WriteFile(fileInfo.FullName);
                        HttpContext.Current.Response.Flush();
                    }
                    catch (Exception e)
                    {
                    }
                    finally
                    {
                        HttpContext.Current.Response.End();
                    }
                }
                return result;
            }
    
            private static bool InternetDownload(string path, string fileName)
            {
                string url = path + fileName;
                if (UrlIsExist(url))
                {
                    ResponseRedirect.Redirect(HttpContext.Current.Response, url, "_blank", "");
                    //System.Web.HttpContext.Current.Response.Redirect(url,false);
                }
                return false;//Never use default behavior 
            }
    
            private static bool UrlIsExist(string url)
            {
                System.Uri u = null;
                try
                {
                    u = new Uri(url);
                }
                catch { return false; }
                bool isExist = false;
                System.Net.HttpWebRequest r = System.Net.HttpWebRequest.Create(u) as System.Net.HttpWebRequest;
                r.Method = "HEAD"; 
                try
                {
                    System.Net.HttpWebResponse s = r.GetResponse() as System.Net.HttpWebResponse;
                    if (s.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        isExist = true;
                    }
                }
                catch (System.Net.WebException x)
                {
                    try
                    {
                        isExist = ((x.Response as System.Net.HttpWebResponse).StatusCode != System.Net.HttpStatusCode.NotFound);
                    }
                    catch { isExist = (x.Status == System.Net.WebExceptionStatus.Success); }
                }
                return isExist;
            }  
        }
  • 相关阅读:
    1058 A+B in Hogwarts (20)
    1046 Shortest Distance (20)
    1061 Dating (20)
    1041 Be Unique (20)
    1015 Reversible Primes (20)(20 分)
    pat 1027 Colors in Mars (20)
    PAT 1008 Elevator (20)
    操作系统 死锁
    Ajax的get方式传值 避免& 与= 号
    让IE浏览器支持CSS3表现
  • 原文地址:https://www.cnblogs.com/vipsoft/p/3627709.html
Copyright © 2011-2022 走看看