• C# 文件上传类


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    
    namespace Web
    {
    	/// <summary>
    	/// 单文件上传类 (暂时不支持多文件上传)
    	/// yangyunzhou@foxmail.com
    	/// </summary>
    	public class UploadFile
    	{
    		/// <summary>
    		/// 上传文件信息 (动态数组)
    		/// </summary>
    		public Dictionary<string, dynamic> FileInfo = new Dictionary<string, dynamic>();
    
    		/// <summary>
    		/// 最大文件大小
    		/// </summary>
    		public int FileSize = 10240;
    
    		/// <summary>
    		/// 文件保存路径
    		/// </summary>
    		public string FilePath = "/Upload";
    
    		/// <summary>
    		/// 允许上传的文件类型, 逗号分割,必须全部小写!
    		/// 
    		/// 格式: ".gif,.exe" 或更多
    		/// </summary>
    		public string FileType = ".jpg,.gif,.png,.bmp";
    
    		/// <summary>
    		/// 上传错误
    		/// </summary>
    		public bool Error;
    
    		/// <summary>
    		/// 消息
    		/// </summary>
    		public string Message;
    
    		/// <summary>
    		/// 保存文件
    		/// </summary>
    		/// <param name="FormField">表单文件域名称</param>
    		public void Save(string FormField)
    		{
    			var Response = HttpContext.Current.Response;
    			var Request = HttpContext.Current.Request;
    
    			// 获取上传的文件
    			HttpFileCollection File = Request.Files;
    			HttpPostedFile PostFile = File[FormField];
    
    			// 验证格式
    			this.CheckingType(PostFile.FileName);
    
    			// 获取存储目录
    			var Path = this.GetPath();
    			var dir = Path + this.FileInfo["Name"];
    
    			// 注册文件信息
    			this.FileInfo.Add("path", Path + this.FileInfo["Name"]);
    			this.FileInfo.Add("filepath", this.FileInfo["dir"] + this.FileInfo["Name"]);
    
    			// 保存文件
    			PostFile.SaveAs(dir);
    		}
    
    		/// <summary>
    		/// 获取目录
    		/// </summary>
    		/// <returns></returns>
    		private string GetPath()
    		{
    			// 存储目录
    			string Path = this.FilePath;
    
    			// 目录格式
    			string Date = DateTime.Now.ToString("yyyy-MM/dd");
    			string dir = HttpContext.Current.Server.MapPath(Path + "/" + Date);
    
    			// 注册文件信息
    			this.FileInfo.Add("dir", Date + '/');
    
    			// 创建目录
    			if(Directory.Exists(dir) == false)
    				Directory.CreateDirectory(dir);
    			return dir + '/';
    		}
    
    		/// <summary>
    		/// 验证文件类型
    		/// </summary>
    		/// <param name="FileName"></param>
    		private void CheckingType(string FileName)
    		{
    			// 获取允许允许上传类型列表
    			string[] TypeList = this.FileType.Split(',');
    
    			// 获取上传文件类型(小写)
    			string Type = Path.GetExtension(FileName).ToLowerInvariant();
    			string Name = Path.GetFileNameWithoutExtension(FileName);
    			string NameHash = Name.GetHashCode().ToString();
    
    			// 注册文件信息
    			this.FileInfo.Add("name", Name);
    			this.FileInfo.Add("Name", MD5.Encrypt(NameHash) + Type);
    			this.FileInfo.Add("type", Type);
    
    			// 验证类型
    			if(TypeList.Contains(Type) == false)
    				this.TryError("文件类型非法!");
    		}
    
    		/// <summary>
    		/// 抛出错误
    		/// </summary>
    		/// <param name="Msg"></param>
    		public void TryError(string Msg)
    		{
    			this.Error = true;
    			this.Message = Msg;
    		}
    	}
    }
    用法:
    var Upload = new UploadFile();
    Upload.Save("file");
    if(Upload.Error) {
    	Response.Write(Upload.Message);
    } else {
    	Response.Write(Upload.FileInfo["filepath"]);
    	Response.Write("上传成功!");
    }
    
    转载请注明来源!
  • 相关阅读:
    P4868 天天和不可描述
    天天寄快递
    iOS开发资源网站
    找图标的网址
    json解析网址
    屏幕适配
    加密 解密
    json解析网址
    IOS设计模式之三:MVC模式
    什么是Cocoa?什么是Xcode?什么是Framework?
  • 原文地址:https://www.cnblogs.com/yangyunzhou/p/2063316.html
Copyright © 2020-2023  润新知