今天出于项目需要 之前的类库出现很多冗余代码 闲暇之余自己下了一个FilesUpload类库 个人感觉而不错 欢迎大家提出建议
调用代码:
string str = "UpLoadFile/Img"; FilesUpload UpMain = new FilesUpload(); UpMain.FileUploadControl = FileUpload1; //设定上传的目录,成功后为存贮的路径“UpLoadFile/Img/************************.jpg” UpMain.UpLoadFilePath = str; //限定文件的格式必须以’|‘隔开 UpMain.AllowUpLoadFileExtension = ".zip|.jpg"; //设定文件的命名方式FilesUpload.RenameType 枚举类型,Guid:guid命名规则,Default:原文件命名规则(如果重复则为原文件命名+i,i为重复的个数),TimeNumber 时分秒毫秒命名规则(yyyyMMddhhmmssfff) //UpMain.RenameTypeList = FilesUpload.RenameType.TimeNumber; UpMain.UpLoad(); if (UpMain.UpLoadSuccess) { //成功后返回的文件扩展名(.jpg) //UpMain.UpLoadFileExtension //成功后返回的文件的存贮路径 “UpLoadFile/Img/************************.jpg” //UpMain.UpLoadFilePath //上传文件的大小 字节为单位 int i = UpMain.UploadFileSize; MessageBox.Show(Page, "上传成功!"); } else {
//失败时候的错误信息 //UpMain.UploadFileErrorMsg MessageBox.Show(Page, UpMain.UploadFileErrorMsg); }
public class FilesUpload
{
private FileUpload fileUploadControl;
/// <summary>
/// 上传控件
/// </summary>
public FileUpload FileUploadControl
{
get { return fileUploadControl; }
set { fileUploadControl = value; }
}
private bool upLoadSuccess = false;
/// <summary>
/// 是否上传成功
/// </summary>
public bool UpLoadSuccess
{
get { return upLoadSuccess; }
}
private string upLoadFilePath;
/// <summary>
/// 上传路径,成功以后返回相对路径;
/// </summary>
public string UpLoadFilePath
{
get { return upLoadFilePath; }
set { upLoadFilePath = value; }
}
private string upLoadFileExtension;
/// <summary>
/// 成功后返回文件的的格式,例如:".jpg"
/// </summary>
public string UpLoadFileExtension
{
get { return upLoadFileExtension; }
}
private string upLoadFileThumbnailPath;
/// <summary>
/// 缩略图路径
/// </summary>
public string UpLoadFileThumbnailPath
{
get { return upLoadFileThumbnailPath; }
set { upLoadFileThumbnailPath = value; }
}
private int uploadFileSize;
/// <summary>
/// 上传成功返回文件的大小
/// </summary>
public int UploadFileSize
{
get { return uploadFileSize; }
}
private string uploadFileErrorMsg;
/// <summary>
/// 上传失败错误信息
/// </summary>
public string UploadFileErrorMsg
{
get { return uploadFileErrorMsg; }
}
private string allowUpLoadFileExtension = ".jpg|.gif|.png|.bmp|.psd|.swf|.doc|.docx|.rtf|.xls|.txt|.xlsx|.ppt|.pdf|.rar|.zip|.mpp|.mpd|.chm|.wma|.mp3|.wmv|.mid|.mpg|.avi|.asf|.mht|.mhtml|.htm|.html|.xml|.dwg|.pln";
/// <summary>
/// 限定的文件格式必须是".jpg|.gif"格式
/// </summary>
public string AllowUpLoadFileExtension
{
get { return allowUpLoadFileExtension; }
set { allowUpLoadFileExtension = value; }
}
private int allowUploadFileSize = 31457280;
public int AllowUploadFileSize
{
get { return allowUploadFileSize; }
set { allowUploadFileSize = value; }
}
private RenameType renameTypeList = RenameType.TimeNumber;
public RenameType RenameTypeList
{
set { renameTypeList = value; }
}
public enum RenameType
{
/// <summary>
///原文件名+上传时间时间
/// </summary>
Default,
/// <summary>
/// GUID命名规则
/// </summary>
Guid,
/// <summary>
/// 时间yyyyMMddhhmmss命名
/// </summary>
TimeNumber
}
public void UpLoad()
{
#region
if (fileUploadControl.HasFile)
{
string fileName = fileUploadControl.PostedFile.FileName;
upLoadFileExtension = Path.GetExtension(fileName).ToLower();
if (fileUploadControl.PostedFile.ContentLength > allowUploadFileSize)
{
upLoadSuccess = false;
uploadFileErrorMsg = string.Format("不允许上传大小超过{0}M 的文件!", allowUploadFileSize / 1048576);
}
else if (allowUpLoadFileExtension.Split('|').Where(p => p.Equals(upLoadFileExtension)).Count() == 0)
{
upLoadSuccess = false;
uploadFileErrorMsg = string.Format("不允许上传格式为{0}的文件!", upLoadFileExtension);
}
else
{
try
{
switch (renameTypeList)
{
case RenameType.Default:
upLoadFilePath = GetDefaultNameFilePath(upLoadFilePath, Path.GetFileNameWithoutExtension(fileName), upLoadFileExtension);
break;
case RenameType.Guid:
upLoadFilePath = string.Format("{0}/{1}{2}", upLoadFilePath, Guid.NewGuid().ToString("N").ToUpper(), upLoadFileExtension);
break;
case RenameType.TimeNumber:
upLoadFilePath = GetTimeNumberFilePath(upLoadFilePath, upLoadFileExtension);
break;
default:
break;
}
fileUploadControl.SaveAs(HttpContext.Current.Server.MapPath(string.Format("~/{0}", upLoadFilePath)));
uploadFileSize = fileUploadControl.PostedFile.ContentLength;
upLoadSuccess = true;
}
catch (Exception ex)
{
upLoadSuccess = false;
uploadFileErrorMsg = string.Format("上传过程出现错误:{0}", ex.Message);
}
}
}
else
{
upLoadSuccess = false;
uploadFileErrorMsg = "文件不允许为空!";
}
#endregion
}
/// <summary>
/// 获得上传文件名原名+i,文件物理相对路径
/// </summary>
/// <param name="upLoadFilePath"></param>
/// <param name="extensionName"></param>
/// <returns></returns>
public string GetDefaultNameFilePath(string upLoadFilePath, string fileName, string extensionName)
{
string path = string.Format("{0}/{1}", upLoadFilePath, fileName);
int i = 1;
while (File.Exists(HttpContext.Current.Server.MapPath(string.Format("~/{0}{1}", path, extensionName))))
{
path = string.Format("{0}/{1}{2}", upLoadFilePath, fileName, i);
i++;
}
return string.Format("{0}{1}", path, extensionName);
}
/// <summary>
/// 根据时间获得文件物理相对路径
/// </summary>
/// <param name="upLoadFilePath"></param>
/// <param name="extensionName"></param>
/// <returns></returns>
private string GetTimeNumberFilePath(string upLoadFilePath, string extensionName)
{
string path = string.Format("{0}/{1}", upLoadFilePath, DateTime.Now.ToString("yyyyMMddHHmmssfff"));
while (File.Exists(HttpContext.Current.Server.MapPath(string.Format("~/{0}{1}", path, extensionName))))
{
Random rd = new Random();
path = string.Format("{0}{1}", path, rd.Next(100, 999));
}
return string.Format("{0}{1}", path, extensionName);
}
}