C# 通用文件上传类 |
本文标签:C#,上传文件类 1、Upfile.aspx: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Upfile.aspx.cs" Inherits="Inc_Upfile" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";> <html xmlns="http://www.w3.org/1999/xhtml"; > <head runat="server"> <title>上传文件</title> <link href="../Manage/Style.Css" type="text/css" rel=Stylesheet /> </head> <body> <form id="form1" runat="server"> <div style="left: 0px; clip: rect(0px auto auto 0px); position: absolute; top: 0px"> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传文件" CssClass="btn2" /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div> </form> </body> </html> Upfile.aspx.cs 代码 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; 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; public partial class Inc_Upfile : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Cut By 梦溪苑 。 } protected void Button1_Click(object sender, EventArgs e) { AllSheng.upload UpFiles = new AllSheng.upload(); //HttpPostedFile File = FileUpload1.PostedFile; // AllSheng.UploadObj.PhotoSave("/", FileUpload1); HttpFileCollection files = HttpContext.Current.Request.Files; UpFiles.Path = "../UpLoadfiles"; String ReStr= UpFiles.SaveAs(files).ToString(); Label1.Text = ReStr; UpFiles = null; } } 3、类文件: 代码 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /**//// <summary> /// Cls_Upfile 的摘要说明 /// </summary> /// namespace AllSheng { public class upload { 变量#region 变量 System.Web.HttpPostedFile postedFile; protected string localFileName;//原文件名(含扩展名) protected string localFileExtension;//原扩展名 protected long localFileLength;//原文件大小 protected string localFilePath;//原文件路径 protected string saveFileName;//保存的文件名(含扩展名) protected string saveFileExtension;//保存的扩展名 //protected long saveFileLength;//保存的文件大小 protected string saveFilePath;//保存文件的服务器端的完整路径 protected string saveFileFolderPath;//保存文件的服务器端的文件夹路径 private string path = null; private string fileType = null; private int sizes = 0; #endregion upload():初始化变量#region upload():初始化变量 /**//// <summary> /// 初始化变量 /// </summary> public upload() { path = @"uploadimages"; //上传路径 fileType = "jpg|gif|bmp|jpeg|png|rar|doc"; sizes = 200; //传文件的大小,默认200KB } #endregion 设置传入的值:Path/Sizes/FileType#region 设置传入的值:Path/Sizes/FileType /**//// <summary> /// 设置上传路径,如:uploadimages /// </summary> public string Path { set { path = @"" + value + @""; } } /**//// <summary> /// 设置上传文件大小,单位为KB /// </summary> public int Sizes { set { sizes = value; } } /**//// <summary> /// 设置上传文件的类型,如:jpg|gif|bmp /// </summary> public string FileType { set { fileType = value; } } #endregion SaveAs()上传文件#region SaveAs()上传文件 public string SaveAs(System.Web.HttpFileCollection files) { string myReturn = ""; try { for (int iFile = 0; iFile < files.Count; iFile++) { postedFile = files[iFile]; //获得文件的上传的路径 localFilePath = postedFile.FileName; //判断上传文件路径是否为空 if (localFilePath == null || localFilePath == "") { //message("您没有上传数据呀,是不是搞错了呀!"); //break; continue; } else { 判断文件大小#region 判断文件大小 //获得上传文件的大小 localFileLength = postedFile.ContentLength; //判断上传文件大小 if (localFileLength >= sizes * 1024) { message("上传的图片不能大于" + sizes + "KB"); break; } #endregion 文件夹#region 文件夹 //获取保存文件夹路径 saveFileFolderPath = getSaveFileFolderPath(path); #endregion 文件名#region 文件名 //获得原文件名(含扩展名) localFileName = System.IO.Path.GetFileName(postedFile.FileName); saveFileName = DateTime.UtcNow.ToString("yyyy" + "MM" + "dd" + "HH" + "mm" + "ss" + "ffffff");//"yyyy"+"MM"+"dd"+"HH"+"mm"+"ss"+"ffffff" #endregion 扩展名#region 扩展名 //获取原文件扩展名 localFileExtension = getFileExtension(localFileName); //如果为真允许上传,为假则不允许上传 if (localFileExtension == "") { message("目前本系统支持的格式为:" + fileType); } //得到保存文件的扩展名,可根据需要更改扩展名 saveFileExtension = localFileExtension; #endregion //得到保存文件的完整路径 saveFilePath = saveFileFolderPath + saveFileName + saveFileExtension; postedFile.SaveAs(saveFilePath); myReturn = myReturn + ((myReturn == "" || myReturn == null) ? "" : "|") + path.TrimStart(new char[] { }) + saveFileName + saveFileExtension; //以下对文章的内容进行一些加工 System.Web.HttpContext.Current.Response.Write("<script>parent.Article_Content___Frame.FCK.EditorDocument.body.innerHTML+=<img src=" + saveFileName + saveFileExtension + " "+" border=0 /></SCRIPT>"); } } } catch { //异常 message("出现未知错误!"); myReturn = null; } return myReturn; } #endregion getSaveFileFolderPath( ):获得保存的文件夹的物理路径#region getSaveFileFolderPath( ):获得保存的文件夹的物理路径 /**//// <summary> /// 获得保存的文件夹的物理路径 /// 返回保存的文件夹的物理路径,若为null则表示出错 /// </summary> /// <param name="format">保存的文件夹路径 或者 格式化方式创建保存文件的文件夹,如按日期"yyyy"+"MM"+"dd":20060511</param> /// <returns>保存的文件夹的物理路径,若为null则表示出错</returns> private string getSaveFileFolderPath(string format) { string mySaveFolder = null; try { string folderPath = null; //以当前时间创建文件夹, //!!!!!!!!!!!!以后用正则表达式替换下面的验证语句!!!!!!!!!!!!!!!!!!! if (format.IndexOf("yyyy") > -1 || format.IndexOf("MM") > -1 || format.IndexOf("dd") > -1 || format.IndexOf("hh") > -1 || format.IndexOf("mm") > -1 || format.IndexOf("ss") > -1 || format.IndexOf("ff") > -1) { //以通用标准时间创建文件夹的名字 folderPath = DateTime.UtcNow.ToString(format); mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + @"" + folderPath + @""; } else { mySaveFolder = System.Web.HttpContext.Current.Server.MapPath(".") + format; } System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(mySaveFolder); //判断文件夹否存在,不存在则创建 if (!dir.Exists) { dir.Create(); } } catch { message("获取保存路径出错"); } return mySaveFolder; } #endregion getFileExtension( ):获取原文件的扩展名#region getFileExtension( ):获取原文件的扩展名 /**//// <summary> /// 获取原文件的扩展名,返回原文件的扩展名(localFileExtension),该函数用到外部变量fileType,即允许的文件扩展名. /// </summary> /// <param name="myFileName">原文件名</param> /// <returns>原文件的扩展名(localFileExtension);若返回为null,表明文件无后缀名;若返回为"",则表明扩展名为非法.</returns> private string getFileExtension(string myFileName) { string myFileExtension = null; //获得文件扩展名 myFileExtension = System.IO.Path.GetExtension(myFileName);//若为null,表明文件无后缀名; //分解允许上传文件的格式 if (myFileExtension != "") {myFileExtension = myFileExtension.ToLower();//转化为小写 } string[] temp = fileType.Split(|); //设置上传的文件是否是允许的格式 bool flag = false; //判断上传的文件是否是允许的格式 foreach (string data in temp) { if (("." + data) == myFileExtension) { flag = true; break; } } if (!flag) { myFileExtension = "";//不能设置成null,因为null表明文件无后缀名; } return myFileExtension; } #endregion message( ):弹出消息框#region message( ):弹出消息框 /**//// <summary> /// 弹出消息框,显示内容(msg),点击"确定"后页面跳转到该路径(url) /// </summary> /// <param name="msg">显示内容</param> /// <param name="url">跳转路径</param> private void message(string msg, string url) { System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert(" + msg + ");window.location=" + url + "</script>"); } /**//// <summary> /// 弹出消息框,显示内容(msg),无跳转 /// </summary> /// <param name="msg">显示内容</param> private void message(string msg) { System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert(" + msg + ");</script>"); } #endregion } } |