国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 午夜国产在线 | 亚洲国语在线视频手机在线 | 亚洲国产精品婷婷久久久久 | 欧美日韩91 | 欧美日韩亚洲区久久综合 | 国产精品视频网站 | 亚洲最新视频在线观看 | 久久久国产一区二区三区 | 可以免费观看一级毛片黄a 另类区 | 日韩第一页在线 | 欧美日韩亚洲国产无线码 | 欧美在线观看一区二区三区 | 在线播放国产一区二区三区 | 亚洲综合一区二区精品久久 | 精品视频在线观看视频免费视频 | 亚洲欧美国产日本 | 精品国产91乱码一区二区三区 | 免费在线一级毛片 | 青青青久久久 | 欧美国产日韩综合 | 美女a级毛片 | 国产第二十页 | 亚洲美女一区二区三区 | 欧美日韩国产一区二区三区在线观看 | 免费一级毛片 | 国产区免费 | 中文字幕三区 | 久久99精品久久久久久 | 欧美综合国产精品日韩一 | 日韩色区| 亚洲国产成人精品一区91 | 日韩综合在线 | 欧美αv日韩αv另类综合 | 中文字幕第一区 | 一区二区亚洲视频 | 日本欧美一区二区三区不卡视频 | 亚洲四色 | 亚洲欧洲日韩国产 | 国产不卡一区二区视频免费 | 国产精品成人一区二区1 | 欧美人xxx |