• 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;
            }  
        }
  • 相关阅读:
    python学习之- 内置函数
    python学习之- 生成器/迭代器
    python学习之-- 装饰器
    python基础之
    Python基础之 一 字符编码及转换
    为什么utf8占用3个字节
    Python基础之 一 文件操作
    IIS6与IIS7中如何设置文件过期
    分布式缓存系统Memcached简介与实践
    Log4net
  • 原文地址:https://www.cnblogs.com/vipsoft/p/3627709.html
Copyright © 2020-2023  润新知