·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.NET 文件上传类 简单好用

ASP.NET 文件上传类 简单好用

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

asp.net 文件上传类 简单好用

调用:

            UploadFile uf = new UploadFile();            /*可选参数*/            uf.SetIsUSEOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认:true),true原始文件名,false系统生成新文件名            uf.SetFileDirectory(Server.MapPath("/file/temp3/"));//文件保存路径(默认:/upload)            uf.SetFileType("*");//允许上传的文件类型, 逗号分割,必须全部小写! *表示所有 (默认值: .pdf,.xls,.xlsx,.doc,.docx,.txt,.png,.jpg,.gif )              uf.SetIsRenameSameFile(false);//重命名同名文件?             //文件以时间分目录保存            var message = uf.Save(Request.Files["Fileupload1"]); //  “/file/temp3/2015/4/xx.jpg”            //文件以编号分目录保存            var message2 = uf.Save(Request.Files["Fileupload1"], "001" /*编号*/);  //   “/file/temp3/001/xx.jpg”            //返回信息            var isError = message.Error;//判段是否上传成功            var webPath = message.WebFilePath;//返回web路径            var msg = message.Message;//返回上传信息            var filePath = message.FilePath;//反回文件路径            var isSuccess = message.Error == false;

  

代码:

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Security.Cryptography;using System.Text.RegularExPRessions;using System.Web;using System.Web.Hosting;namespace SyntacticSugar{    /// <summary>    /// ** 描述:单文件上传类 (暂时不支持多文件上传)    /// ** 创始时间:2015-5-27    /// ** 修改时间:-    /// ** 作者:sunkaixuan    /// </summary>    public class UploadFile    {        private ParamsModel Params;        public UploadFile()        {            Params = new ParamsModel()            {                FileDirectory = "/upload",                FileType = ".pdf,.xls,.xlsx,.doc,.docx,.txt,.png,.jpg,.gif",                MaxSizeM = 10,                PathSaveType = PathSaveType.dateTimeNow,                IsRenameSameFile=true            };        }        /// <summary>        /// 文件保存路径(默认:/upload)        /// </summary>        public void SetFileDirectory(string fileDirectory)        {            if (fileDirectory == null)            {                throw new ArgumentNullException("fileDirectory");            }            var isMapPath = Regex.IsMatch(fileDirectory, @"[a-z]\:\\", RegexOptions.IgnoreCase);            if (isMapPath)            {                fileDirectory = GetRelativePath(fileDirectory);            }            Params.FileDirectory = fileDirectory;        }           /// <summary>        /// 是否使用原始文件名作为新文件的文件名(默认:true)        /// </summary>        /// <param name="isUseOldFileName">true原始文件名,false系统生成新文件名</param>        public void SetIsUseOldFileName(bool isUseOldFileName)        {            Params.IsUseOldFileName = isUseOldFileName;        }        /// <summary>        /// 允许上传的文件类型, 逗号分割,必须全部小写! *表示所有 (默认值: .pdf,.xls,.xlsx,.doc,.docx,.txt,.png,.jpg,.gif )          /// </summary>        public void SetFileType(string fileType)        {            Params.FileType = fileType;        }        /// <summary>        /// 允许上传多少大小(单位:M)        /// </summary>        public void SetMaxSizeM(double maxSizeM)        {            Params.MaxSizeM = maxSizeM;        }        /// <summary>        /// 重命名同名文件?         /// </summary>        /// <param name="isRenameSameFile">true:重命名,false覆盖</param>        public void SetIsRenameSameFile(bool isRenameSameFile)        {            Params.IsRenameSameFile = isRenameSameFile;        }        /// <summary>        /// 保存表单文件        /// </summary>        /// <param name="postFile">HttpPostedFile</param>        /// <returns></returns>        public ResponseMessage Save(HttpPostedFile postFile)        {            return CommonSave(postFile);        }        /// <summary>        /// 保存表单文件,根据编号创建子文件夹        /// </summary>        /// <param name="postFile">HttpPostedFile</param>        /// <param name="number">编号</param>        /// <returns></returns>        public ResponseMessage Save(HttpPostedFile postFile, string number)        {            Params.PathSaveType = PathSaveType.code;            _Number = number;            return CommonSave(postFile);        }        /// <summary>        /// 保存表单文件,根据HttpPostedFile        /// </summary>        /// <param name="postFile">HttpPostedFile</param>        /// <param name="isRenameSameFile">值为true 同名文件进行重命名,false覆盖原有文件</param>        /// <param name="fileName">新的文件名</param>        /// <returns></returns>        private ResponseMessage CommonSave(HttpPostedFile postFile)        {            ResponseMessage reval = new ResponseMessage();            try            {                if (postFile == null || postFile.ContentLength == 0)                {                    TryError(reval, "没有文件!");                    return reval;                }                //文件名                string fileName = Params.IsUseOldFileName ? postFile.FileName : DateTime.Now.ToString("yyyyMMddhhmmssms") + Path.GetExtension(postFile.FileName);                //验证格式                this.CheckingType(reval, postFile.FileName);                //验证大小                this.CheckSize(reval, postFile);                if (reval.Error) return reval;                string webDir = string.Empty;                // 获取存储目录                var directory = this.GetDirectory(ref webDir);                var filePath = directory + fileName;                if (System.IO.File.Exists(filePath))                {                    if (Params.IsRenameSameFile)                    {                        filePath = directory + DateTime.Now.ToString("yyyyMMddhhssms") + "-" + fileName;                    }                    else                    {                        System.IO.File.Delete(filePath);                    }                }                // 保存文件                postFile.SaveAs(filePath);                reval.FilePath = filePath;                reval.FilePath = webDir + fileName;                reval.FileName = fileName;                reval.WebFilePath = webDir + fileName;                return reval;            }            catch (Exception ex)            {                TryError(reval, ex.Message);                return reval;            }        }        private void CheckSize(ResponseMessage message, HttpPostedFile PostFile)        {            if (PostFile.ContentLength / 1024.0 / 1024.0 > Params.MaxSizeM)            {                TryError(message, string.Format("对不起上传文件过大,不能超过{0}M!", Params.MaxSizeM));            }        }        /// <summary>        /// 根据物理路径获取相对路径        /// </summary>        /// <param name="fileDirectory"></param>        /// <param name="sever"></param>        /// <returns></returns>        private static string GetRelativePath(string fileDirectory)        {            var sever = HttpContext.Current.Server;            fileDirectory = "/" + fileDirectory.Replace(sever.MapPath("~/"), "").TrimStart('/').Replace('\\', '/');            return fileDirectory;        }        /// <summary>        /// 获取目录        /// </summary>        /// <returns></returns>        private string GetDirectory(ref string webDir)        {            var sever = HttpContext.Current.Server;            // 存储目录            string directory = Params.FileDirectory;            // 目录格式            string childDirectory = DateTime.Now.ToString("yyyy-MM/dd");            if (Params.PathSaveType == PathSaveType.code)            {                childDirectory = _Number;            }            webDir = directory.TrimEnd('/') + "/" + childDirectory + '/';            string dir = sever.MapPath(webDir);            // 创建目录            if (Directory.Exists(dir) == false)                Directory.CreateDirectory(dir);            return dir;        }        /// <summary>        /// 验证文件类型)        /// </summary>        /// <param name="fileName"></param>        private void CheckingType(ResponseMessage message, string fileName)        {            if