通过HtmlInputFile控件上传文件的类
来源:互联网 发布:小号难学吗 知乎 编辑:程序博客网 时间:2024/05/06 10:27
方法1:判断文件扩展名是否合法
#regionIsAllowedExtension
///<summary>
///是否允许该扩展名上传
///</summary>
///<paramname = "hifile">HtmlInputFile控件</param>
///<returns>允许则返回true,否则返回false</returns>
publicstaticboolIsAllowedExtension(HtmlInputFilehifile)
...{
stringstrOldFilePath = "",strExtension = "";
//允许上传的扩展名,可以改成从配置文件中读出
string[]arrExtension = ...{".gif",".jpg",".jpeg",".bmp",".png"};
if(hifile.PostedFile.FileName! = string.Empty)
...{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//判断该扩展名是否合法
for(inti = 0;i<arrExtension.Length;i++)
...{
if(strExtension.Equals(arrExtension[i]))
...{
return true;
}
}
}
returnfalse;
}
#endregion
方法2:判断上传文件大小是否超过最大值
#region IsAllowedLength
/// <summary>
/// 判断上传文件大小是否超过最大值
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <returns>超过最大值返回false,否则返回true.</returns>
public static bool IsAllowedLength(HtmlInputFile hifile)
...{
//允许上传文件大小的最大值,可以保存在xml文件中,单位为KB
int i = 20;
//如果上传文件的大小超过最大值,返回flase,否则返回true.
if(hifile.PostedFile.ContentLength > i * 1024)
...{
return false;
}
return true;
}
#endregion
方法3:获得唯一的文件名
为了保证上传文件不会出现覆盖的情况,我们需要根据当前时间对文件进行重新命名,得到唯一的文件名的方法为:
#region GetUniqueString
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns></returns>
public static string GetUniqueString()
...{
//得到的文件名形如:20050922101010
return DateTime.Now.ToString("yyyyMMddhhmmss");
}
#endregion
方法4:删除文件
#region DeleteFile
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="strAbsolutePath">文件绝对路径</param>
/// <param name="strFileName">文件名</param>
public static void DeleteFile(string strAbsolutePath, string strFileName)
...{
//判断路径最后有没有符号,没有则自动加上
if(strAbsolutePath.LastIndexOf("/") == strAbsolutePath.Length)
...{
//判断要删除的文件是否存在
if(File.Exists(strAbsolutePath + strFileName))
...{
//删除文件
File.Delete(strAbsolutePath + strFileName);
}
}
else
...{
if(File.Exists(strAbsolutePath + "/" + strFileName))
...{
File.Delete(strAbsolutePath + "/" + strFileName);
}
}
}
#endregion
方法5:上传文件
如果上传文件的扩展名和大小均合法,则将文件上传到服务器上,方法为:
#region SaveFile
/// <summary>
/// 上传文件并返回文件名
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用符号亦可</param>
/// <returns>返回的文件名即上传后的文件名</returns>
public static string SaveFile(HtmlInputFile hifile,string strAbsolutePath)
...{
string strOldFilePath = "",strExtension = "",strNewFileName = "";
//如果上传文件的文件名不为空
if(hifile.PostedFile.FileName != string.Empty)
...{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//文件上传后的命名
strNewFileName = GetUniqueString() + strExtension;
//如果路径末尾为符号,则直接上传文件
if(strAbsolutePath.LastIndexOf("/") == strAbsolutePath.Length)
...{
hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName);
}
else
...{
hifile.PostedFile.SaveAs(strAbsolutePath + "/" + strNewFileName);
}
}
return strNewFileName;
}
#endregion
该方法将文件上传后,会返回上传文件的新文件名,以备将此新文件名插入到数据库中。
方法6:重新上传文件
重新上传文件时,首先要将原来上传过的文件删除,然后上传新文件,并用新文件名覆盖数据库中的旧文件名,这样才完成了重新上传工作,实现代码如下:
#region CoverFile
/// <summary>
/// 重新上传文件,删除原有文件
/// </summary>
/// <param name="ffFile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用符号亦可</param>
/// <param name="strOldFileName">旧文件名</param>
public static void CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName)
...{
//获得新文件名
string strNewFileName = GetUniqueString();
if(ffFile.PostedFile.FileName != string.Empty)
...{
//旧图片不为空时先删除旧图片
if(strOldFileName != string.Empty)
...{
DeleteFile(strAbsolutePath,strOldFileName);
}
SaveFile(ffFile,strAbsolutePath);
}
}
#endregion
通过以上6个方法,即可很方便的上传文件,同时又能对文件进行控制,是不是很方便?不过如果想上传大文件,还是建议使用专门的上传大文件控件。
#regionIsAllowedExtension
///<summary>
///是否允许该扩展名上传
///</summary>
///<paramname = "hifile">HtmlInputFile控件</param>
///<returns>允许则返回true,否则返回false</returns>
publicstaticboolIsAllowedExtension(HtmlInputFilehifile)
...{
stringstrOldFilePath = "",strExtension = "";
//允许上传的扩展名,可以改成从配置文件中读出
string[]arrExtension = ...{".gif",".jpg",".jpeg",".bmp",".png"};
if(hifile.PostedFile.FileName! = string.Empty)
...{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//判断该扩展名是否合法
for(inti = 0;i<arrExtension.Length;i++)
...{
if(strExtension.Equals(arrExtension[i]))
...{
return true;
}
}
}
returnfalse;
}
#endregion
方法2:判断上传文件大小是否超过最大值
#region IsAllowedLength
/// <summary>
/// 判断上传文件大小是否超过最大值
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <returns>超过最大值返回false,否则返回true.</returns>
public static bool IsAllowedLength(HtmlInputFile hifile)
...{
//允许上传文件大小的最大值,可以保存在xml文件中,单位为KB
int i = 20;
//如果上传文件的大小超过最大值,返回flase,否则返回true.
if(hifile.PostedFile.ContentLength > i * 1024)
...{
return false;
}
return true;
}
#endregion
方法3:获得唯一的文件名
为了保证上传文件不会出现覆盖的情况,我们需要根据当前时间对文件进行重新命名,得到唯一的文件名的方法为:
#region GetUniqueString
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns></returns>
public static string GetUniqueString()
...{
//得到的文件名形如:20050922101010
return DateTime.Now.ToString("yyyyMMddhhmmss");
}
#endregion
方法4:删除文件
#region DeleteFile
/// <summary>
/// 删除指定文件
/// </summary>
/// <param name="strAbsolutePath">文件绝对路径</param>
/// <param name="strFileName">文件名</param>
public static void DeleteFile(string strAbsolutePath, string strFileName)
...{
//判断路径最后有没有符号,没有则自动加上
if(strAbsolutePath.LastIndexOf("/") == strAbsolutePath.Length)
...{
//判断要删除的文件是否存在
if(File.Exists(strAbsolutePath + strFileName))
...{
//删除文件
File.Delete(strAbsolutePath + strFileName);
}
}
else
...{
if(File.Exists(strAbsolutePath + "/" + strFileName))
...{
File.Delete(strAbsolutePath + "/" + strFileName);
}
}
}
#endregion
方法5:上传文件
如果上传文件的扩展名和大小均合法,则将文件上传到服务器上,方法为:
#region SaveFile
/// <summary>
/// 上传文件并返回文件名
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用符号亦可</param>
/// <returns>返回的文件名即上传后的文件名</returns>
public static string SaveFile(HtmlInputFile hifile,string strAbsolutePath)
...{
string strOldFilePath = "",strExtension = "",strNewFileName = "";
//如果上传文件的文件名不为空
if(hifile.PostedFile.FileName != string.Empty)
...{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//文件上传后的命名
strNewFileName = GetUniqueString() + strExtension;
//如果路径末尾为符号,则直接上传文件
if(strAbsolutePath.LastIndexOf("/") == strAbsolutePath.Length)
...{
hifile.PostedFile.SaveAs(strAbsolutePath + strNewFileName);
}
else
...{
hifile.PostedFile.SaveAs(strAbsolutePath + "/" + strNewFileName);
}
}
return strNewFileName;
}
#endregion
该方法将文件上传后,会返回上传文件的新文件名,以备将此新文件名插入到数据库中。
方法6:重新上传文件
重新上传文件时,首先要将原来上传过的文件删除,然后上传新文件,并用新文件名覆盖数据库中的旧文件名,这样才完成了重新上传工作,实现代码如下:
#region CoverFile
/// <summary>
/// 重新上传文件,删除原有文件
/// </summary>
/// <param name="ffFile">HtmlInputFile控件</param>
/// <param name="strAbsolutePath">绝对路径.如:Server.MapPath(@"Image/upload")与Server.MapPath(@"Image/upload/")均可,用符号亦可</param>
/// <param name="strOldFileName">旧文件名</param>
public static void CoverFile(HtmlInputFile ffFile,string strAbsolutePath,string strOldFileName)
...{
//获得新文件名
string strNewFileName = GetUniqueString();
if(ffFile.PostedFile.FileName != string.Empty)
...{
//旧图片不为空时先删除旧图片
if(strOldFileName != string.Empty)
...{
DeleteFile(strAbsolutePath,strOldFileName);
}
SaveFile(ffFile,strAbsolutePath);
}
}
#endregion
通过以上6个方法,即可很方便的上传文件,同时又能对文件进行控制,是不是很方便?不过如果想上传大文件,还是建议使用专门的上传大文件控件。
- 通过HtmlInputFile控件上传文件的类
- 通过HtmlInputFile控件上传文件的类
- 通过HtmlInputFile控件上传文件的类
- 通过HtmlInputFile控件上传文件的类
- 通过HtmlInputFile控件上传文件的类
- 通过HtmlInputFile控件上传文件的类
- asp.net 通过HtmlInputFile控件上传文件的类
- 如何通过HtmlInputFile控件上传文件的类
- ASP.Net之HTMLInputFile控件上传文件
- 清空上传控件HtmlInputFile的方法
- HtmlInputFile的上传文件功能失效了
- DataGrid中的HtmlInputFile上传文件
- 在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法
- 通过button控制input控件上传文件
- 破晓之阳原创『上传图片』之HtmlInputFile控件
- HtmlInputFile和img控件實現預覽圖片
- HtmlInputFile
- VB中用inet控件通过FTP实现单个文件和多个文件的上传
- 面向对象基本概念
- 程序员如何缓解压力,保持心理健康
- jsp验证码的例程
- 加密 web.config
- [连载] 用C#进行思考(前言)
- 通过HtmlInputFile控件上传文件的类
- Java 知一点
- 查找SOHO资料,找发短信软件
- “抛砖引砖”—在SOA博客圈开博仪式上的致辞
- Windows Server 2003 安全性指南介绍 强化IIS服务器
- [连载] 用C#进行思考(一)生产者和消费者
- 有关DataGridView
- 通过datatable获得表的主键
- 传了好久的照片