[转帖]一点代码_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1779 | 回复: 0   主题: [转帖]一点代码        下一篇 
张三丰
注册用户
等级:上尉
经验:511
发帖:53
精华:0
注册:2013-11-19
状态:离线
发送短消息息给张三丰 加好友    发送短消息息给张三丰 发消息
发表于: IP:您无权察看 2013-11-19 10:04:05 | [全部帖] [楼主帖] 楼主

/// <summary>

/// 提供上传文件时所使用的方法

/// </summary>

publicinterfaceIUploadFile

{

    /// <summary>

    /// 验证上传文件的扩展名

    /// </summary>

    /// <param name="postFile">System.Web.HttpPostedFile对象</param>

    /// <returns></returns>

    boolCheckFileType(System.Web.HttpPostedFile postFile);

    /// <summary>

    /// 获取文件名称

    /// 调用此方法并不创建新目录

    /// </summary>

    /// <param name="filePath">服务器的虚拟路径</param>

    /// <param name="fileName">文件名</param>

    /// <returns></returns>

    stringGetFileName(stringfilePath,stringfileName);

}

/// <summary>

/// 提供上传文件时所使用的方法

/// </summary>

publicabstractclassUploadFile

{

    /// <summary>

    /// 获取文件路径

    /// </summary>

    /// <param name="path">虚拟路径</param>

    /// <returns></returns>

    protectedstringGetDirectory(stringpath)

    {

    stringdirectoryName = DateTime.Now.ToString("yyyyMMdd");

    stringfilePath = Path.Combine(path, directoryName);

    if(!Directory.Exists(filePath))

    {

    returnPath.Combine(filePath, GetNumber(1));

    }

    returnPath.Combine(filePath, GetPath(Directory.GetDirectories(filePath), filePath));

    }

    /// <summary>

    /// 获取文件夹中的文个数件少于1000的文件夹名称

    /// </summary>

    /// <param name="info">目录名称</param>

    /// <param name="filePath">路径</param>

    /// <returns></returns>

    protectedstringGetPath(IList<string> info, stringfilePath)

    {

    stringfileName = string.Empty;

    if(info == null)

    {

    returnnull;

    }

    if(info.Count <= 0)

    {

    returnGetNumber(1);

    }

    for(inti = 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))

    {

    returnPath.Combine(filePath, GetNumber(int.Parse(info.ToList<string>().Max(s => s.Substring(s.LastIndexOf("\\") + 1).TrimStart('0'))) + 1));

    }

    else

    {

    returnfileName;

    }

    }

    /// <summary>

    /// 获取数字字符串,不足4位用0补足

    /// </summary>

    /// <param name="number">不大于9999的数字</param>

    /// <returns></returns>

    protectedstringGetNumber(intnumber)

    {

    if(number > 9999) returnnull;

    return(10000 + number).ToString().Substring(1);

    }

    #region IUploadFile 成员

    /// <summary>

    /// 验证上传文件的扩展名

    /// </summary>

    /// <param name="postFile">System.Web.HttpPostedFile对象</param>

    /// <returns></returns>

    publicabstractboolCheckFileType(System.Web.HttpPostedFile postFile);

    /// <summary>

    /// 获取文件名称

    /// </summary>

    /// <param name="filePath">服务器的虚拟路径</param>

    /// <param name="fileName">文件名</param>

    /// <returns></returns>

    publicvirtualstringGetFileName(stringfilePath,stringfileName)

    {

    DateTime now = DateTime.Now;

    stringname = (100 + now.Hour).ToString().Substring(1) + (100 + now.Minute).ToString().Substring(1) + (100 + now.Second).ToString().Substring(1) + "_"+ fileName;

    returnPath.Combine(GetDirectory(filePath), name);

    }

    #endregion

}

publicclassLBCUploadFile:UploadFile,IUploadFile

{

    /// <summary>

    /// 验证上传文件的扩展名

    /// </summary>

    /// <param name="postFile">System.Web.HttpPostedFile对象</param>

    /// <returns></returns>

    publicoverrideboolCheckFileType(System.Web.HttpPostedFile postFile)

    {

    IList<string> fileType = newList<string>();

    fileType.Add("image/gif");

    fileType.Add("image/jpeg");

    fileType.Add("image/png");

    returnfileType.Contains(postFile.ContentType);

    }

}

/// <summary>

/// 文件上传管理类

/// </summary>

publicclassUploadFileManager

{

    privatestringfileName=null;

    privatestringerrInfo;

    privateIUploadFile uploadFile;

    privateintfileLength=1024*1024;

    /// <summary>

    /// 初始化类实例

    /// </summary>

    publicUploadFileManager()

    {

    uploadFile = newLBCUploadFile();

    }

    /// <summary>

    /// 初始化类实例

    /// </summary>

    /// <param name="uploadFile">实现了IUploadFile接口的对象</param>

    publicUploadFileManager(IUploadFile uploadFile)

    {

    this.uploadFile = uploadFile;

    }

    /// <summary>

    /// 获取或设置文件名,如果上传失败则为null

    /// </summary>

    publicstringFileName

    {

    get

    {

    returnfileName;

    }

    }

    /// <summary>

    /// 获取或设置上传文件的大小,单位为字节,默认为1024*1024

    /// </summary>

    publicintFileLength

    {

    get

    {

    returnfileLength;

    }

    set

    {

    fileLength = value;

    }

    }

    /// <summary>

    /// 获取文件上传失败的信息

    /// </summary>

    publicstringErrorInfo

    {

    get

    {

    returnerrInfo;

    }

    }

    /// <summary>

    /// 上传文件

    /// </summary>

    /// <param name="postFile">System.Web.HttpPostedFile对象</param>

    /// <param name="filePath">服务器的虚拟路径</param>

    publicboolUploadFile(System.Web.HttpPostedFile postFile, stringfilePath)

    {

    if(postFile == null)

    {

errInfo = "参数postFile为null!";

returnfalse;

}

if(postFile.ContentLength <= 0)

{

errInfo = "没有要上传的文件!";

returnfalse;

}

if(postFile.ContentLength > fileLength)

{

errInfo = "上传的文件太大!";

returnfalse;

}

if(!uploadFile.CheckFileType(postFile))

{

errInfo = "上传文件格式不正确!";

returnfalse;

}

try

{

stringuploadFileName = uploadFile.GetFileName(filePath,Path.GetFileName(postFile.FileName));

stringpath = Path.GetDirectoryName(uploadFileName);

if(!Directory.Exists(path))

{

try

{

if(Directory.CreateDirectory(path) == null)

{

errInfo = "创建目录失败!";

returnfalse;

}

}

catch

{

errInfo = "创建目录失败!";

returnfalse;

}

}

intcount = 0;

while(true)

{

    if(File.Exists(uploadFileName))

    {

    count++;

    stringfileName = Path.GetFileName(uploadFileName);

    uploadFileName =Path.Combine(path,(1000000 + count).ToString().Substring(1) + "_"+ fileName);

    }

    else

    {

    try

    {

    postFile.SaveAs(uploadFileName);

    fileName = uploadFileName;

    returntrue;

    }

    catch(System.Web.HttpException e)

    {

    errInfo = e.Message;

    returnfalse;

    }

    }

}

}

catch(System.Web.HttpException e)

{

errInfo = "上传文件时出现异常,异常消息为:"+e.Message;

returnfalse;

}

}

}




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论