Default.aspx.cs
上传用户:xrffrp
上传日期:2022-03-25
资源大小:22155k
文件大小:11k
源码类别:

OA系统

开发平台:

ASP/ASPX

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Web.UI.WebControls.WebParts;
  9. using System.Web.UI.HtmlControls;
  10. using System.IO;
  11. public partial class _Default : System.Web.UI.Page 
  12. {
  13.     protected void Page_Load(object sender, EventArgs e)
  14.     {
  15.         if (!Page.IsPostBack)
  16.         {
  17.             //初始化文件夹信息
  18.             InitFolderInfo();
  19.             //初始化上传限制信息
  20.             InitUploadLimit();
  21.             //初始化列表框控件文件列表信息
  22.             InitFileList();
  23.         }
  24.     }
  25. #region 初始化文件夹信息 InitFolderInfo()
  26.     private void InitFolderInfo()
  27.     {
  28.         //从web.config中读取文件上传路径
  29.         string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  30.         //如果上传文件夹不存在,则根据config创建一个
  31.         if(!Directory.Exists(Server.MapPath(strFileUpladPath)))
  32.         {
  33.             Directory.CreateDirectory(Server.MapPath(strFileUpladPath));
  34.         }
  35.         //将虚拟路径转换为物理路径
  36.         string strFilePath = Server.MapPath(strFileUpladPath);
  37.         //从config里读取文件夹容量限制
  38.         double iFolderSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FolderSizeLimit"]);
  39.         //声明文件夹已经使用的容量
  40.         double iFolderCurrentSize = 0;
  41.         //获取文件夹中的所有文件
  42.         FileInfo[] arrFiles = new DirectoryInfo(strFilePath).GetFiles();
  43.         //循环文件获已经使用的容量
  44.         foreach (FileInfo fi in arrFiles)
  45.         {
  46.             iFolderCurrentSize += Convert.ToInt32(fi.Length / 1024);
  47.         }
  48.         #region 第二种获得文件夹使用大小的方法
  49.         //DirectoryInfo dir = new DirectoryInfo(strFilePath);
  50.         //foreach (FileSystemInfo fi in dir.GetFileSystemInfos())
  51.         //{
  52.         //    FileInfo finf = new FileInfo(fi.FullName);
  53.         //    iFolderCurrentSize += Convert.ToInt32(finf.Length / 1024);
  54.         //}
  55.         #endregion
  56.         //把文件夹容量和以用文件夹容量赋值给标签
  57.         lbl_FolderInfo.Text = string.Format("文件夹容量限制:{0}M,已用容量:{1}KB", iFolderSizeLimit / 1024, iFolderCurrentSize);
  58.     }
  59.     #endregion
  60.     #region 初始化上传限制信息 InitUploadLimit()
  61.     private void InitUploadLimit()
  62.     {
  63.         //从config中读取上传文件夹类型限制并根据逗号分割成字符串数组
  64.         string[] arrFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString().Split(',');
  65.         //从config中读取上传文件大小限制
  66.         double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]);
  67.         //遍历字符串数组把所有项加入项目编号控件
  68.         for (int i = 0; i < arrFileTypeLimit.Length; i++)
  69.         {
  70.             bl_TileTypeLimit.Items.Add(arrFileTypeLimit[i].ToString());
  71.         }
  72.         //把文件大小限制赋值给标签
  73.         lab_FileSizeLimit.Text = string.Format("{0:f2}M", iFileSizeLimit / 1024);
  74.     }
  75.     #endregion
  76.     #region 初始化列表框控件文件列表信息 InitFileList()
  77.     private void InitFileList()
  78.     {
  79.         //从config中获取文件上传路径
  80.         string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  81.         //将虚拟路径转换为物理路径
  82.         string strFilePath = Server.MapPath(strFileUpladPath);
  83.         //读取上传文件夹下所有文件
  84.         FileInfo[] arrFile = new DirectoryInfo(strFilePath).GetFiles();
  85.         //把文件名逐一添加到列表框控件
  86.         foreach(FileInfo fi in arrFile)
  87.         {
  88.             lb_FileList.Items.Add(fi.Name);
  89.         }
  90.     }
  91.     #endregion
  92.     #region 判断文件大小限制 IsAllowableFileSize()
  93.     private bool IsAllowableFileSize()
  94.     {
  95.         //从web.config读取判断文件大小的限制
  96.         double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]) * 1024;
  97.         //判断文件是否超出了限制
  98.         if (iFileSizeLimit > FileUpload.PostedFile.ContentLength)
  99.         {
  100.             return true;
  101.         }
  102.         else
  103.         {
  104.             return false;
  105.         }
  106.     }
  107.     #endregion
  108.    #region 判断文件类型限制 IsAllowableFileType()
  109.     protected bool IsAllowableFileType()
  110.     {
  111.         //从web.config读取判断文件类型限制
  112.         string strFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString();
  113.         //当前文件扩展名是否包含在这个字符串中
  114.         if(strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower()) >0)
  115.             return true;
  116.         else
  117.             return false;
  118.     }
  119.     #endregion
  120.     #region 弹出警告消息 ShowMessageBox(string strMessage)
  121.     protected void ShowMessageBox(string strMessage)
  122.     {
  123.         Response.Write(string.Format("<script>alert('{0}')</script>",strMessage));
  124.     }
  125.     #endregion
  126.     #region 上传文件按钮事件 btn_Upload_Click()
  127.     protected void btn_Upload_Click(object sender, EventArgs e)
  128.     {
  129.         //判断用户是否选择了文件
  130.         if (FileUpload.HasFile)
  131.         {
  132.             //调用自定义方法判断文件类型否符合
  133.             if (IsAllowableFileType())
  134.             {
  135.                 //判断文件大小是否符合
  136.                 if (IsAllowableFileSize())
  137.                 {
  138.                     //从web.config中读取上传路径
  139.                     string strFileUploadPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  140.                     //从UploadFile控件中读取文件名
  141.                     string strFileName =FileUpload.FileName;
  142.                     //组合成物理路径
  143.                     string strFilePhysicalPath = Server.MapPath(strFileUploadPath + "/") + strFileName;
  144.                     //判断文件是否存在
  145.                     if(!File.Exists(strFilePhysicalPath))
  146.                     {
  147.                         //保存文件
  148.                         FileUpload.SaveAs(strFilePhysicalPath);
  149.                         //更新列表框
  150.                         lb_FileList.Items.Add(strFileName);
  151.                         //更新文件夹信息
  152.                         InitFolderInfo();
  153.                         ShowMessageBox("上传成功!");
  154.                     }
  155.                     else
  156.                     {
  157.                         ShowMessageBox("文件已经存在!");
  158.                     }
  159.                 }
  160.                 else
  161.                 {
  162.                     ShowMessageBox("文件大小不符合要求!");
  163.                 }
  164.             }
  165.             else
  166.             {
  167.                 ShowMessageBox("类型不匹配");
  168.             }
  169.         }
  170.     }
  171.     #endregion
  172.     #region 列表框事件 lb_FileList_SelectedIndexChanged()
  173.     protected void lb_FileList_SelectedIndexChanged(object sender, EventArgs e)
  174.     {
  175.         //从config中读取文件上传路径
  176.         string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  177.         //从列表框中读取选择的文件名
  178.         string strFileName = lb_FileList.SelectedValue;
  179.         //组合成物理路径
  180.         string strFilePhysicalPath = Server.MapPath(strFileUpladPath + "/") + strFileName;
  181.         //根据物理路径实例化文件信息类
  182.         FileInfo fi = new FileInfo(strFilePhysicalPath);
  183.         //或得文件大小和创建日期赋值给标签
  184.         lbl_FileDescription.Text = string.Format("文件大小:{0}字节<br><br>上传时间:{1}<br>", fi.Length, fi.CreationTime);
  185.         //把文件名赋值给重命名文件框
  186.         tb_FileNewName.Text = strFileName;
  187.     }
  188.     #endregion
  189.     #region 下载文件按钮事件 btn_DownLoad_Click()
  190.     protected void btn_DownLoad_Click(object sender, EventArgs e)
  191.     {
  192.         //从web.config读取文件上传路径
  193.         string strFileUploadPath = ConfigurationManager.AppSettings["FileUplodePath"].ToLower();
  194.         //从列表框中读取选择的文件
  195.         string strFileName = lb_FileList.SelectedValue;
  196.         //组合成物理路径
  197.         string FullFileName = Server.MapPath(strFileUploadPath + "/") + strFileName;
  198.         FileInfo DownloadFile = new FileInfo(FullFileName);
  199.         Response.Clear();
  200.         Response.ClearHeaders();
  201.         Response.Buffer = false;
  202.         Response.ContentType = "application/octet-stream";
  203.         Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8));
  204.         Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
  205.         Response.WriteFile(DownloadFile.FullName);
  206.         Response.Flush();
  207.         Response.End();
  208.     }
  209.     #endregion
  210.     #region 删除文件 btn_Delete_Click()
  211.     protected void btn_Delete_Click(object sender, EventArgs e)
  212.     {                  
  213.         //从config中读取文件上传路径
  214.         string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  215.         //从列表框中读取选择的文件名
  216.         string strFileName = lb_FileList.SelectedValue;
  217.         //组合成物理路径
  218.         string strFilePhysicalPath = Server.MapPath(strFileUpladPath + "/") + strFileName;
  219.         //删除文件
  220.         System.IO.File.Delete(strFilePhysicalPath);
  221.         //更新文件列表框控件
  222.         lb_FileList.Items.Remove(lb_FileList.Items.FindByText(strFileName));
  223.         //更新文件夹信息
  224.         InitFolderInfo();
  225.         //更新文件描述信息
  226.         tb_FileNewName.Text = "";
  227.         //更新重命名文本框
  228.         lbl_FileDescription.Text = "";
  229.         //调用自定义消息提示
  230.         ShowMessageBox("删除成功!");
  231.     }
  232.     #endregion
  233.     #region 重命名文件 btn_Rename_Click()
  234.     protected void btn_Rename_Click(object sender, EventArgs e)
  235.     {
  236.         //从web.config中读取文件上传路径
  237.         string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString();
  238.         //从列表框中控件中读取选择的文件名
  239.         string strFileName = lb_FileList.SelectedValue;
  240.         //重命名文本框或得选择的文件名
  241.         string strFileNewName = tb_FileNewName.Text;
  242.         //组合成物理路径
  243.         string strFilePhysicalPath = Server.MapPath(strFileUpladPath + "/") + strFileName;
  244.         //组合成新物理路径
  245.         string strFileNewPhysicalPath = Server.MapPath(strFileUpladPath + "/") + strFileNewName;
  246.         //文件重命名,即获取新地址覆盖旧地址的过程
  247.         System.IO.File.Move(strFilePhysicalPath, strFileNewPhysicalPath);
  248.         //找到文件列表的匹配项
  249.         ListItem li = lb_FileList.Items.FindByText(strFileName);
  250.         //修改文字
  251.         li.Text = strFileNewName;
  252.         //修改值
  253.         li.Value = strFileNewName;
  254.         //调用自定义方法现实
  255.         ShowMessageBox("文件覆盖成功!");
  256.     }
  257.     #endregion
  258.     #region 下拉列表事件 DropDownList1_SelectedIndexChanged()
  259.     protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
  260.     {
  261.         MultiView1.ActiveViewIndex = Convert.ToInt32(DropDownList1.SelectedValue);
  262.     }
  263.     #endregion
  264. }