• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:38:28
    文檔

    ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類

    ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類:調(diào)用方法: UploadFile uf = new UploadFile(); /*可選參數(shù)*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認(rèn):true),true原始文件名,false系統(tǒng)生成新文件名 uf.SetFileDirectory(Server.Map
    推薦度:
    導(dǎo)讀ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類:調(diào)用方法: UploadFile uf = new UploadFile(); /*可選參數(shù)*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認(rèn):true),true原始文件名,false系統(tǒng)生成新文件名 uf.SetFileDirectory(Server.Map

    調(diào)用方法:

    UploadFile uf = new UploadFile();
     
    /*可選參數(shù)*/
    uf.SetIsUseOldFileName(true);//是否使用原始文件名作為新文件的文件名(默認(rèn):true),true原始文件名,false系統(tǒng)生成新文件名
    uf.SetFileDirectory(Server.MapPath("/file/temp3/"));//文件保存路徑(默認(rèn):/upload)
    uf.SetFileType("*");//允許上傳的文件類型, 逗號分割,必須全部小寫! *表示所有 (默認(rèn)值: .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>
     /// ** 描述:單文件上傳類 (暫時不支持多文件上傳)
     /// ** 創(chuàng)始時間: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>
     /// 文件保存路徑(默認(rèn):/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>
     /// 是否使用原始文件名作為新文件的文件名(默認(rèn):true)
     /// </summary>
     /// <param name="isUseOldFileName">true原始文件名,false系統(tǒng)生成新文件名</param>
     public void SetIsUseOldFileName(bool isUseOldFileName)
     {
     Params.IsUseOldFileName = isUseOldFileName;
     }
     
     /// <summary>
     /// 允許上傳的文件類型, 逗號分割,必須全部小寫! *表示所有 (默認(rèn)值: .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>
     /// 保存表單文件,根據(jù)編號創(chuàng)建子文件夾
     /// </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>
     /// 保存表單文件,根據(jù)HttpPostedFile
     /// </summary>
     /// <param name="postFile">HttpPostedFile</param>
     /// <param name="isRenameSameFile">值為true 同名文件進(jìn)行重命名,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);
     
     //驗(yàn)證格式
     this.CheckingType(reval, postFile.FileName);
     //驗(yàn)證大小
     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>
     /// 根據(jù)物理路徑獲取相對路徑
     /// </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);
     // 創(chuàng)建目錄
     if (Directory.Exists(dir) == false)
     Directory.CreateDirectory(dir);
     return dir;
     }
     
     /// <summary>
     /// 驗(yàn)證文件類型)
     /// </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(); ;
     
     // 驗(yàn)證類型
     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>
     /// 根據(jù)時間創(chuàng)建存儲目錄
     /// </summary>
     dateTimeNow = 0,
     /// <summary>
     /// 根據(jù)ID編號方式來創(chuàng)建存儲目錄
     /// </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>
     /// 網(wǎng)站路徑
     /// </summary>
     public string WebFilePath { get; set; }
     /// <summary>
     /// 獲取文件名
     /// </summary>
     public string FileName { get; set; }
     
     }
     #endregion
     }
    }
    

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

    文檔

    ASP.NET實(shí)現(xiàn)的簡單易用文件上傳類

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲精品成人在线| 香蕉久久夜色精品升级完成| 久久精品国产只有精品66| 久久99热只有频精品8| 久久精品国产一区二区三区| 老司机99精品99| 国产精品熟女高潮视频| 中文字幕无码久久精品青草| 精品久久久无码中文字幕天天| 精品国产品香蕉在线观看75| 久久精品中文字幕无码绿巨人| 日韩福利视频精品专区| 国产精品无码免费播放| 精品国产污污免费网站| 精品爆乳一区二区三区无码av| 亚洲欧美精品综合中文字幕| 精品露脸国产偷人在视频| 亚洲精品理论电影在线观看| 91久久精品91久久性色| 无码人妻精品中文字幕免费 | 蜜芽亚洲av无码精品色午夜| 亚洲国产av无码精品| 国内精品久久久久久不卡影院 | 在线精品国产一区二区三区| 狠狠精品久久久无码中文字幕 | 国产精品免费网站| 国产成人精品优优av| 国产成人精品一区二区秒拍| 久久精品九九亚洲精品| 亚洲精品国产成人片| 自拍偷自拍亚洲精品情侣| 亚洲精品成人区在线观看| 亚洲国产精品视频| 亚洲av午夜成人片精品电影| 日韩精品电影一区亚洲| 亚洲国产精品毛片av不卡在线 | 国产精品videossex白浆| 国产A∨国片精品一区二区 | 久久久91精品国产一区二区三区 | 青青草精品视频| 午夜精品成年片色多多|