年后写的一点代码
- C# code
/// <summary> /// 提供上传文件时所使用的方法 /// </summary> public interface IUploadFile { /// <summary> /// 验证上传文件的扩展名 /// </summary> /// <param name="postFile">System.Web.HttpPostedFile对象</param> /// <returns></returns> bool CheckFileType(System.Web.HttpPostedFile postFile); /// <summary> /// 获取文件名称 /// 调用此方法并不创建新目录 /// </summary> /// <param name="filePath">服务器的虚拟路径</param> /// <param name="fileName">文件名</param> /// <returns></returns> string GetFileName(string filePath,string fileName); } /// <summary> /// 提供上传文件时所使用的方法 /// </summary> public abstract class UploadFile { /// <summary> /// 获取文件路径 /// </summary> /// <param name="path">虚拟路径</param> /// <returns></returns> protected string GetDirectory(string path) { string directoryName = DateTime.Now.ToString("yyyyMMdd"); string filePath = Path.Combine(path, directoryName); if (!Directory.Exists(filePath)) { return Path.Combine(filePath, GetNumber(1)); } return Path.Combine(filePath, GetPath(Directory.GetDirectories(filePath), filePath)); } /// <summary> /// 获取文件夹中的文个数件少于1000的文件夹名称 /// </summary> /// <param name="info">目录名称</param> /// <param name="filePath">路径</param> /// <returns></returns> protected string GetPath(IList<string> info, string filePath) { string fileName = string.Empty; if (info == null) { return null; } if (info.Count <= 0) { return GetNumber(1); } for (int i = 0; i < info.Count; i++) { if (Directory.Exists(info[i])) { if (Directory.GetFiles(info[i]).Length < 1000) { fileName = info[i]; break; } } } if (string.IsNullOrEmpty(fileName)) { return Path.Combine(filePath, GetNumber(int.Parse(info.ToList<string>().Max(s => s.Substring(s.LastIndexOf("\\") + 1).TrimStart('0'))) + 1)); } else { return fileName; } } /// <summary> /// 获取数字字符串,不足4位用0补足 /// </summary> /// <param name="number">不大于9999的数字</param> /// <returns></returns> protected string GetNumber(int number) { if (number > 9999) return null; return (10000 + number).ToString().Substring(1); } #region IUploadFile 成员 /// <summary> /// 验证上传文件的扩展名 /// </summary> /// <param name="postFile">System.Web.HttpPostedFile对象</param> /// <returns></returns> public abstract bool CheckFileType(System.Web.HttpPostedFile postFile); /// <summary> /// 获取文件名称 /// </summary> /// <param name="filePath">服务器的虚拟路径</param> /// <param name="fileName">文件名</param> /// <returns></returns> public virtual string GetFileName(string filePath,string fileName) { DateTime now = DateTime.Now; string name = (100 + now.Hour).ToString().Substring(1) + (100 + now.Minute).ToString().Substring(1) + (100 + now.Second).ToString().Substring(1) + "_" + fileName; return Path.Combine(GetDirectory(filePath), name); } #endregion }public class LBCUploadFile:UploadFile,IUploadFile { /// <summary> /// 验证上传文件的扩展名 /// </summary> /// <param name="postFile">System.Web.HttpPostedFile对象</param> /// <returns></returns> public override bool CheckFileType(System.Web.HttpPostedFile postFile) { IList<string> fileType = new List<string>(); fileType.Add("image/gif"); fileType.Add("image/jpeg"); fileType.Add("image/png"); return fileType.Contains(postFile.ContentType); } }
[解决办法]
编程习惯不错,层次结构清晰
[解决办法]
我已然看晕了....... -.-!
[解决办法]
层次比较清晰,UP
[解决办法]
UP
[解决办法]
[解决办法]
up
[解决办法]
同时比较充分的体现了面向对象的设计思想。
[解决办法]
写的挺好,要是再加上控件类就完美了。
[解决办法]
学习了!
up!
[解决办法]
谢谢分享
学习了
[解决办法]
让看者也一目了然!不错!学习!
[解决办法]
学习
[解决办法]
好东西~谢谢LZ分享
[解决办法]
赞z
[解决办法]
支持分享
[解决办法]
不错......
[解决办法]
不错不错,过年长胖了~
[解决办法]
顶
[解决办法]
不错,很清晰
不过建议
你把
public override bool CheckFileType(System.Web.HttpPostedFile postFile)
{
IList<string> fileType = new List<string>();
fileType.Add("image/gif");
fileType.Add("image/jpeg");
fileType.Add("image/png");
return fileType.Contains(postFile.ContentType);
}
这串检测代码,另外包装一下,可以把这个IList<string> fileType公开,方便程序员在调用的时候能自己定义类型
另外如果能提供基于xml配置的定义,这样更好
[解决办法]
收藏.
[解决办法]
顶,标记下
[解决办法]
路过,觉得挺好玩的
[解决办法]
收藏
[解决办法]
打酱油
[解决办法]
up
[解决办法]
不错,学习了
[解决办法]
没明白UploadFile这个抽象类的作用.lz 能帮小弟解答一下吗
[解决办法]
mark
[解决办法]
顶一下哈
[解决办法]
不错了,层次清楚!
------解决方案--------------------
不错不错,过年长胖了~
[解决办法]
mark
[解决办法]
UP
[解决办法]
MARK
[解决办法]
编程习惯比较好
[解决办法]
学习
[解决办法]
不觉得一个方法太长了么
[解决办法]
多谢了
[解决办法]
up
[解决办法]
学习了
[解决办法]
顶~~向楼主学习!!
[解决办法]
mark.
[解决办法]
顶了!
[解决办法]
我怎么看不明白啊
[解决办法]
支持
[解决办法]
```````
[解决办法]
```````
[解决办法]
学习中
[解决办法]
up
[解决办法]
恩,很清晰
赞
[解决办法]
学习了!
[解决办法]
收藏了
[解决办法]
学习下...
[解决办法]
这不是IOC的原型吗?
[解决办法]
ding..!
[解决办法]
呵呵,帮顶.学习中
[解决办法]
学习ing
[解决办法]
mark
[解决办法]
mark
[解决办法]
学习!up
[解决办法]
学习了
[解决办法]
[解决办法]
学习中阿。。。瓦嘎嘎
[解决办法]
顶一下
[解决办法]
收藏
[解决办法]
用不到!!!
------解决方案--------------------
还行
[解决办法]
跟我的编程风格很像
[解决办法]
学习学习。
[解决办法]
不错,收藏了
[解决办法]
学习+支持,只有这样才能腾飞!哈哈
[解决办法]
进来学习!
帮顶,让更多人看到!
[解决办法]
学习了
[解决办法]
up~
[解决办法]
学习学习
[解决办法]
过年长见识了
[解决办法]
不错,顶起来
[解决办法]
充分体现了面向女人的设计思想
[解决办法]
感谢LZ分享!!!
[解决办法]
不错...
[解决办法]
不错,很牛逼
[解决办法]
我,倒,我测了半天老是出来的路径不对!
[解决办法]
获取文件夹中的文个数件少于1000的文件夹名称那部分逻辑可以抽象出来
应用策略模式
[解决办法]
我刚学设计模式时,什么都想抽象成接口
但往往不是抽象的时机不合适就是算法提炼的不彻底,反到容易搬起石头砸自己的脚.
只有合适的才是最好的,如果真的有必要的话再用接口和抽象类
[解决办法]
没做过,友情帮顶!!!
[解决办法]
不错,学习了.
[解决办法]
收藏了
[解决办法]
做个标记
[解决办法]
不错,学习下
[解决办法]
很好!!!