C# 常用公共方法

2019-12-30 13:32:46刘景俊

4.批量导入

 <input name="file" type="file" id="file" />
<input type="submit" name="Upload" value="上传" />

 


/// <summary>
  /// 批量导入
  /// </summary>
  /// <returns></returns>
  [HttpPost]
  public ActionResult ImportStu()
  {
   HttpPostedFileBase file = Request.Files["file"];
   string FileName;
   string savePath;
   if (file == null || file.ContentLength <= 0)
   {
    return Content("<script>alert('上传失败,请选择上传文件!');location.href='/MyTest/MVCPager';</script>");
   }
   else
   {
    string filename = Path.GetFileName(file.FileName);
    int filesize = file.ContentLength;//获取上传文件的大小单位为字节byte
    string fileEx = System.IO.Path.GetExtension(filename);//获取上传文件的扩展名
    string NoFileName = System.IO.Path.GetFileNameWithoutExtension(filename);//获取无扩展名的文件名
    string FileType = ".xls,.xlsx";//定义上传文件的类型字符串
    if (FileType.Contains(".exe"))//EXCEL
    {
     return Content("<script>alert('上传文件类型格式错误,不允许导入exe格式的文件!');location.href='/MyTest/MVCPager';</script>");
    }
    FileName = NoFileName + DateTime.Now.ToString("yyyyMMddhhmmss") + fileEx;
    string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
    savePath = Path.Combine(path, FileName);
    file.SaveAs(savePath);

    if (FileType.Contains(fileEx))//EXCEL
    {
     string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savePath + ";" + "Extended Properties=Excel 8.0";
     OleDbConnection conn = new OleDbConnection(strConn);
     conn.Open();
     OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$]", strConn);
     DataSet myDataSet = new DataSet();
     try
     {
      myCommand.Fill(myDataSet, "ExcelInfo");
     }
     catch (Exception ex)
     {
      return Content("<script>alert('上传失败," + ex.Message + "!');location.href='/MyTest/MVCPager';</script>");
     }
     //列顺序 标题 内容
     DataTable table = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();

     //事物 异常回滚
     using (TransactionScope transaction = new TransactionScope())
     {
      for (int i = 0; i < table.Rows.Count; i++)
      {
       ArticleEntity model = new ArticleEntity();
       model.Title = table.Rows[i][0].ToString();
       model.Content = table.Rows[i][1].ToString();
       new AchieveDAL.MyTestDAL().AddArticle(model);
      }
      transaction.Complete();
     }
    }

    return RedirectToAction("MVCPager", "MyTest");
   }
  }

5.获取客户端的IP地址

 


/// <summary>
  /// 获取客户端的IP地址
  /// </summary>
  /// <returns>客户端IP地址</returns>
  public static string Get_ClientIP()
  {
   string result = string.Empty;
   result = HttpContext.Current.Request.Headers["X-Real-IP"]; //Nginx 为前端时获取IP地址的方法
   if (result != null)
    return result;

   if (HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"] != null)//发出请求的远程主机的IP地址
   {
    result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
   }
   else if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)//判断是否设置代理,若使用了代理
   {
    if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)//获取代理服务器的IP
    {
     result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
    }
    else
    {
     result = HttpContext.Current.Request.UserHostAddress;
    }
   }
   else
   {
    result = HttpContext.Current.Request.UserHostAddress;
   }
   if (result == "::1")
    result = string.Empty;
   return result;
  }