获取程序所在文件路径及保存STREAM到本地文件

自定义一个方法
public static string MapPath(string strPath)
  {
  if (System.Web.HttpContext.Current != null)
  {
  return System.Web.HttpContext.Current.Server.MapPath(strPath);
  }
  else //非web程序引用
  {
  strPath = strPath.Replace("/", "");
  strPath = strPath.Replace("~", "");
  if (strPath.StartsWith("\\"))
  {
  strPath = strPath.TrimStart('\\');
  }
  return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
  }
  }

 

-------------------------------------------------------------------------------------------------------------------------------

 

   private HttpWebRequest CreateRequest(string path, string queryString = null)
        {
            if (!string.IsNullOrWhiteSpace(queryString) && !queryString.StartsWith("?"))
                queryString = "?" + queryString;

            var url = new Uri(BaseUrl, path + queryString).AbsoluteUri;

            var request = (HttpWebRequest)WebRequest.Create(url);

            request.Headers["Authorization"] = AuthorizationKey;
            request.Timeout = TimeoutSeconds == System.Threading.Timeout.Infinite ? TimeoutSeconds : TimeoutSeconds * 1000;

            return request;
        }

        public bool SaveResponseContentToCSV(String path, String queryString = null)
        {
            var request = CreateRequest(path, queryString);
            var requestTrace = string.Empty;

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                try
                {
                    var fileType = response.ContentType;
                    var index = response.Headers["Content-Disposition"].IndexOf("=") + 1;
                    var fileName = response.Headers["Content-Disposition"].Substring(index);

                    Stream respStream = response.GetResponseStream();
                    int length = (int)response.ContentLength;
                    BinaryReader br = new BinaryReader(respStream);
                    FileStream fs;
                    //var localFilePath = System.Web.HttpContext.Current.Server.MapPath("\\dailyClickActivity" + "\\" + System.DateTime.Now.ToLongTimeString());
                    //AppDomain.CurrentDomain.BaseDirectory
                    var localFilePath = System.IO.Path.Combine(Environment.CurrentDirectory, "/dailyClickActivity" + "/" + System.DateTime.Now.ToString("yyyyMMdd"));
                    if (!Directory.Exists(localFilePath))
                        Directory.CreateDirectory(localFilePath);

                    fs = File.Create(string.Format("{0}/{1}", localFilePath, fileName));
                    fs.Write(br.ReadBytes(length), 0, length);

                    br.Close();
                    fs.Close(); 

                    return true;
                }
                catch (Exception ex)
                {
                    requestTrace += ex.Message;
                    throw;
                }
                finally
                {
                    //TracerLogger.Log(requestTrace, EventLogEntryType.Information, Constants.RoleNameAdFabricClick);
                    Console.WriteLine(string.Format("{0},{1},{2}", requestTrace, EventLogEntryType.Information, Constants.RoleNameAdFabricClick));

                }
            }
        }

 

你可能感兴趣的:(获取程序所在文件路径及保存STREAM到本地文件)