using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Configuration; using System.Web.Configuration; using System.Collections; using System.Text.RegularExpressions; namespace Visaok.ul.UserCenter.dialogs.attachment { public partial class upfile : System.Web.UI.Page { public string s; private string state = "SUCCESS"; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string[] filetype = { ".rar", ".doc", ".docx", ".zip", ".pdf", ".txt", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".mov", ".wmv", ".mp4", ".webm",".jpg" }; //文件允许格式 int size = 100; //文件大小限制,单位MB,同时在web.config里配置环境默认为100MB string uploadpath = Request.MapPath("~/"); //取得网站根目录路径 //格式验证 if (checkType(filetype)) { //不允许的文件类型 state = "\u4e0d\u5141\u8bb8\u7684\u6587\u4ef6\u7c7b\u578b"; } //大小验证 if (checkSize(size)) { //文件大小超出网站限制 state = "\u6587\u4ef6\u5927\u5c0f\u8d85\u51fa\u7f51\u7ad9\u9650\u5236"; } //保存图片 if (state == "SUCCESS") { //目录创建 string Path = DateTime.Now.ToString("yyMMddHHmmss") + (new Random().Next(0, 99).ToString("00")); createFolder(uploadpath + "Peerfile\\"+ Path); if (string.IsNullOrEmpty(FileUpload1.FileName)) { Response.Write("未选择文件"); return; } FileUpload1.SaveAs(uploadpath + "Peerfile\\" + Path+"\\" + FileUpload1.FileName); //存储文件到文件夹 FileInfo pathinfo = new FileInfo(uploadpath + "Peerfile\\" + Path + "\\" + FileUpload1.FileName.ToString()); string pathtwo = WebConfigurationManager.AppSettings["path"]; string RootDirectory = WebConfigurationManager.AppSettings["RootDirectory"]; s = " <b><a href=\"" + pathtwo + Path + "/" + pathinfo.Name + "\"><img style=\"display:inline-block;\" src=\"" + RootDirectory + "Peer/PeerCenter/dialogs/attachment/images/icon_rar.gif\">" + pathinfo.Name + "</a></b> "; div1.InnerHtml = pathinfo.Name + "上传成功"; } else { div1.InnerHtml = "上传的格式不允许"; } } /** * 获取文件信息 * @param context * @param string * @return string */ public string getOtherInfo(HttpContext cxt, string field) { string info = null; if (cxt.Request.Form[field] != null && !String.IsNullOrEmpty(cxt.Request.Form[field])) { info = field == "fileName" ? cxt.Request.Form[field].Split(',')[1] : cxt.Request.Form[field]; } return info; } /** * 重命名文件 * @return string */ private string reName() { return System.Guid.NewGuid() + getFileExt(); } /** * 文件类型检测 * @return bool */ private bool checkType(string[] filetype) { string currentType = getFileExt(); return Array.IndexOf(filetype, currentType) == -1; } /** * 文件大小检测 * @param int * @return bool */ private bool checkSize(int size) { //ContentLength return FileUpload1.PostedFile.ContentLength>= (size * 1024 * 1024); } /** * 获取文件扩展名 * @return string */ private string getFileExt() { string[] temp = FileUpload1.FileName.Split('.'); return "." + temp[temp.Length - 1].ToLower(); } /** * 按照日期自动创建存储文件夹 */ private void createFolder(string fintPath) { if (!Directory.Exists(fintPath)) { Directory.CreateDirectory(fintPath); } } /** * 删除存储文件夹 * @param string */ public void deleteFolder(string path) { //if (Directory.Exists(path)) //{ // Directory.Delete(path, true); //} } public static string Format(string format, string filename) { if (String.IsNullOrWhiteSpace(format)) { format = "{filename}{rand:6}"; } string ext = Path.GetExtension(filename); filename = Path.GetFileNameWithoutExtension(filename); format = format.Replace("{filename}", filename); format = new Regex(@"\{rand(\:?)(\d+)\}", RegexOptions.Compiled).Replace(format, new MatchEvaluator(delegate(Match match) { var digit = 6; if (match.Groups.Count >2) { digit =Convert.ToInt32(match.Groups[2].Value); } var rand = new Random(); return rand.Next((int)Math.Pow(10,digit),(int)Math.Pow(10,digit +1)).ToString(); })); format = format.Replace("{time}", DateTime.Now.Ticks.ToString()); format = format.Replace("{yyyy}", DateTime.Now.Year.ToString()); format = format.Replace("{yy}", (DateTime.Now.Year % 100).ToString("D2")); format = format.Replace("{mm}", DateTime.Now.Month.ToString("D2")); format = format.Replace("{dd}", DateTime.Now.Day.ToString("D2")); format = format.Replace("{hh}", DateTime.Now.Hour.ToString("D2")); format = format.Replace("{ii}", DateTime.Now.Minute.ToString("D2")); format = format.Replace("{ss}", DateTime.Now.Second.ToString("D2")); var invalidPattern = new Regex(@"[\\\/\:\*\?\042\<\>\|]"); format = invalidPattern.Replace(format, ""); return format + ext; } } }