<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        ASP.NET實現的簡單易用文件上傳類

        來源:懂視網 責編:小采 時間:2020-11-27 22:38:28
        文檔

        ASP.NET實現的簡單易用文件上傳類

        ASP.NET實現的簡單易用文件上傳類:調用方法: UploadFile uf = new UploadFile(); /*可選參數*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認:true),true原始文件名,false系統生成新文件名 uf.SetFileDirectory(Server.Map
        推薦度:
        導讀ASP.NET實現的簡單易用文件上傳類:調用方法: UploadFile uf = new UploadFile(); /*可選參數*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認:true),true原始文件名,false系統生成新文件名 uf.SetFileDirectory(Server.Map

        調用方法:

        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 (Params.FileType != "*")
         {
         // 獲取允許允許上傳類型列表
         string[] typeList = Params.FileType.Split(',');
         
         // 獲取上傳文件類型(小寫)
         string type = Path.GetExtension(fileName).ToLowerInvariant(); ;
         
         // 驗證類型
         if (typeList.Contains(type) == false)
         this.TryError(message, "文件類型非法!");
         }
         }
         
         /// <summary>
         /// 拋出錯誤
         /// </summary>
         /// <param name="Msg"></param>
         private void TryError(ResponseMessage message, string msg)
         {
         message.Error = true;
         message.Message = msg;
         }
         
         #region models
         
         private class ParamsModel
         {
         /// <summary>
         /// 文件保存路徑
         /// </summary>
         public string FileDirectory { get; set; }
         /// <summary>
         /// 允許上傳的文件類型, 逗號分割,必須全部小寫!
         /// </summary>
         public string FileType { get; set; }
         /// <summary>
         /// 允許上傳多少大小
         /// </summary>
         public double MaxSizeM { get; set; }
         /// <summary>
         /// 路徑存儲類型
         /// </summary>
         public PathSaveType PathSaveType { get; set; }
         /// <summary>
         /// 重命名同名文件?
         /// </summary>
         public bool IsRenameSameFile { get; set; }
         /// <summary>
         /// 是否使用原始文件名
         /// </summary>
         public bool IsUseOldFileName { get; set; }
         }
         
         
         /// <summary>
         /// 路徑存儲類型
         /// </summary>
         public enum PathSaveType
         {
         /// <summary>
         /// 根據時間創建存儲目錄
         /// </summary>
         dateTimeNow = 0,
         /// <summary>
         /// 根據ID編號方式來創建存儲目錄
         /// </summary>
         code = 1
         
         }
         private string _Number { get; set; }
         
         /// <summary>
         /// 反回信息
         /// </summary>
         public class ResponseMessage
         {
         /// <summary>
         /// 上傳錯誤
         /// </summary>
         public bool Error { get; set; }
         /// <summary>
         /// 消息
         /// </summary>
         public string Message { get; set; }
         /// <summary>
         /// 文件路徑
         /// </summary>
         public string FilePath { get; set; }
         /// <summary>
         /// 網站路徑
         /// </summary>
         public string WebFilePath { get; set; }
         /// <summary>
         /// 獲取文件名
         /// </summary>
         public string FileName { get; set; }
         
         }
         #endregion
         }
        }
        

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET實現的簡單易用文件上傳類

        ASP.NET實現的簡單易用文件上傳類:調用方法: UploadFile uf = new UploadFile(); /*可選參數*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認:true),true原始文件名,false系統生成新文件名 uf.SetFileDirectory(Server.Map
        推薦度:
        標簽: 文件 使用 簡單
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产精品无码久久98| 亚洲国产精品一区二区三区在线观看| 99亚洲精品卡2卡三卡4卡2卡| 亚色九九九全国免费视频| 亚洲A∨无码一区二区三区| a级日本高清免费看| 久久久久无码精品亚洲日韩| 国产日韩AV免费无码一区二区| 亚洲精品无码av人在线观看| 99视频免费在线观看| 亚洲精品成人片在线观看精品字幕| 精品无码国产污污污免费网站国产 | 水蜜桃视频在线观看免费播放高清| 在线观看亚洲精品国产| 一个人免费视频在线观看www| 国产日韩亚洲大尺度高清| 免费看又黄又无码的网站| 亚洲成AV人综合在线观看| 成人永久免费高清| 色吊丝性永久免费看码| 亚洲成a人片在线观看无码| 120秒男女动态视频免费| 一个人免费观看视频www| 亚洲狠狠婷婷综合久久| 亚洲精品国产精品国自产观看| 中文字幕乱码一区二区免费| 亚洲高清免费在线观看| 日本无吗免费一二区| 97在线免费视频| 亚洲AV色吊丝无码| 日韩精品成人亚洲专区| 亚洲18在线天美| 啊v在线免费观看| 免费精品久久天干天干| 亚洲一卡二卡三卡| 亚洲人成影院在线无码观看| 午夜免费啪视频在线观看| 亚洲欧洲无卡二区视頻| 亚洲欧洲∨国产一区二区三区| 一二三四在线播放免费观看中文版视频 | 亚洲综合精品网站|