|
asp.net(C#)上传下载及文件管理代码实例如下:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
using System.IO; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //初始化文件夹信息 InitFolderInfo(); //初始化上传限制信息 InitUploadLimit(); //初始化列表框控件文件列表信息 InitFileList(); } } #region 初始化文件夹信息 private void InitFolderInfo() { //从config中读取文件上传路径 string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString(); //如果上传文件夹不存在,则根据config创建一个 if(!Directory.Exists(Server.MapPath(strFileUpladPath))) { Directory.CreateDirectory(Server.MapPath(strFileUpladPath)); } //将虚拟路径转换为物理路径 string strFilePath = Server.MapPath(strFileUpladPath); //从config里读取文件夹容量限制 double iFolderSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FolderSizeLimit"]); //声明文件夹已经使用的容量 double iFolderCurrentSize = 0; //获取文件夹中的所有文件 FileInfo[] arrFiles = new DirectoryInfo(strFilePath).GetFiles(); //循环文件获已经使用的容量 foreach (FileInfo fi in arrFiles) { iFolderCurrentSize += Convert.ToInt32(fi.Length / 1024); } #region 第二种获得文件夹使用大小的方法 //DirectoryInfo dir = new DirectoryInfo(strFilePath); //foreach (FileSystemInfo fi in dir.GetFileSystemInfos()) //{ // FileInfo finf = new FileInfo(fi.FullName); // iFolderCurrentSize += Convert.ToInt32(finf.Length / 1024); //} #endregion //把文件夹容量和以用文件夹容量赋值给标签 lbl_FolderInfo.Text = string.Format("文件夹容量限制:{0}M,已用容量:{1}KB", iFolderSizeLimit / 1024, iFolderCurrentSize); } #endregion #region 初始化上传限制信息 private void InitUploadLimit() { //从config中读取上传文件夹类型限制并根据逗号分割成字符串数组 string[] arrFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString().Split(','); //从config中读取上传文件大小限制 double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]); //遍历字符串数组把所有项加入项目编号控件 for (int i = 0; i < arrFileTypeLimit.Length; i++) { bl_TileTypeLimit.Items.Add(arrFileTypeLimit[i].ToString()); } //把文件大小限制赋值给标签 lab_FileSizeLimit.Text = string.Format("{0:f2}M", iFileSizeLimit / 1024); } #endregion #region 初始化列表框控件文件列表信息 private void InitFileList() { //从config中获取文件上传路径 string strFileUpladPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString(); //将虚拟路径转换为物理路径 string strFilePath = Server.MapPath(strFileUpladPath); //读取上传文件夹下所有文件 FileInfo[] arrFile = new DirectoryInfo(strFilePath).GetFiles(); //把文件名逐一添加到列表框控件 foreach(FileInfo fi in arrFile) { lb_FileList.Items.Add(fi.Name); } } #endregion #region 判断文件大小限制 private bool IsAllowableFileSize() { //从web.config读取判断文件大小的限制 double iFileSizeLimit = Convert.ToInt32(ConfigurationManager.AppSettings["FileSizeLimit"]) * 1024; //判断文件是否超出了限制 if (iFileSizeLimit > FileUpload.PostedFile.ContentLength) { return true; } else { return false; } } #endregion #region 判断文件类型限制 protected bool IsAllowableFileType() { //从web.config读取判断文件类型限制 string strFileTypeLimit = ConfigurationManager.AppSettings["FileTypeLimit"].ToString(); //当前文件扩展名是否包含在这个字符串中 if(strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower()) >0) return true; else return false; } #endregion #region 弹出警告消息 protected void ShowMessageBox(string strMessage) { Response.Write(string.Format("<script>alert('{0}')</script>",strMessage)); } #endregion #region 上传文件按钮事件 protected void btn_Upload_Click(object sender, EventArgs e) { //判断用户是否选择了文件 if (FileUpload.HasFile) { //调用自定义方法判断文件类型否符合 if (IsAllowableFileType()) { //判断文件大小是否符合 if (IsAllowableFileSize()) { //从web.config中读取上传路径 string strFileUploadPath = ConfigurationManager.AppSettings["FileUplodePath"].ToString(); //从UploadFile控件中读取文件名 string strFileName = FileUpload.FileName; //组合成物理路径 string strFilePhysicalPath = Server.MapPath(strFileUploadPath + "/") + strFileName; //判断文件是否存在 if(!File.Exists(strFilePhysicalPath)) { //保存文件 FileUpload.SaveAs(strFilePhysicalPath); //更新列表框 lb_FileList.Items.Add(strFileName); //更新文件夹信息 InitFolderInfo(); ShowMessageBox("上传成功!"); } else { ShowMessageBox("文件已经存在!"); } } else { ShowMessageBox("文件大小不符合要求!"); } } else { ShowMessageBox("类型不匹配"); } } } #endregion
共2页: 上一页 1 [2] 下一页
|