using System;
using System.Web.UI.HtmlControls;
using System.IO;
namespace Web.Custom
{
/*
* ----------------------------------------
* 功能: 通过HtmlInputFile控件上传文件类
* 创建: 2005-09-21
* 作者: ∮明天去要饭
* 邮箱: kgidwss@hotmail.com
* ---------------------------------------
*/
/// <summary>
/// HtmlInputFileControl 的摘要说明。
/// </summary>
public class HtmlInputFileControl
{
#region HtmlInputFileControl
public HtmlInputFileControl()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#endregion
#region IsAllowedExtension
/// <summary>
/// 是否允许该扩展名上传
/// </summary>
/// <param name="hifile">HtmlInputFile控件</param>
/// <returns>允许则返回true,否则返回false</returns>
public static bool IsAllowedExtension(HtmlInputFile hifile)
{
string strOldFilePath = "",strExtension = "";
//允许上传的扩展名,可以改成从配置文件中读出
string[] arrExtension = {".gif",".jpg",".jpeg",".bmp",".png"};
if(hifile.PostedFile.FileName != string.Empty)
{
strOldFilePath = hifile.PostedFile.FileName;
//取得上传文件的扩展名
strExtension = strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));
//判断该扩展名是否合法
for(int i = 0; i< arrExtension.Length; i++)
{
if(strExtension.Equals(arrExtension[i]))
{
return true;
}
}
}
return false;
}
#endregion
#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
#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
#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
#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
#region GetUniqueString
/// <summary>
/// 获取一个不重复的文件名
/// </summary>
/// <returns></returns>
public static string GetUniqueString()
{
return DateTime.Now.ToString("yyyyMMddhhmmss");
}
#endregion
}
}
|
相关推荐
asp.net 批量上传控件HtmlInputFile 可以设置同时上传文件的个数,大小限制以及格式等。
ASP.NET分页控件源码 可以直接在页面中使用,页面美观
vb.net 基本控件演示源码vb.net 基本控件演示源码vb.net 基本控件演示源码vb.net 基本控件演示源码
纯属个人作品。供ASP.NET爱好者学习之用。请勿用于商业用途。这是一个简易版的提示消息控件。。
Vb.net验证码控件及Demo源码 Vb.net验证码控件及Demo源码 Vb.net验证码控件及Demo源码
asp.net分页控件源码含数据库完整演示代码。 更多开源代码:Asp.net开源交流群:40273821
vb.net DataGridView控件用法,.net DataGridView控件用法,GridView用法
.net 工业控件 .net 工业控件 .net 工业控件
.net 图形控件源码 zedgraph_source
ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发...
.net日期控件.net日期控件.net日期控件.net日期控件.net日期控件.net日期控件.net日期控件
ASP.NET上传控件V1.0 beta2 eWebapp.Upload.dll 内含使用说明书
一个不错的Asp.net分页控件源码及演示
Asp.net 验证码控件Asp.net 验证码控件Asp.net 验证码控件
asp.net GridView自定义控件源码,美化控件。
基于URL分页的ASP.NET分页控件源码,且有多种样式可选择
vb.net 自定义控件 自定义属性 UITypeEditor UI 类型编辑器 实例 提供一个示例 UITypeEditor,它使用 IWindowsFormsEditorService 显示用于用户输入的 Form。 IWindowsFormsEditorService 只能通过 PropertyGrid ...
一个不错的Asp.net分页控件源码及演示.zip
此控件是一个最多可以同时上传十个文件的控件! 直接把BIN文件夹下的eHtmlInputFile.dll添加为控件,就可以使用了,很简单的!
asp.net图表控件,附原码