.NET上传控件源码[HtmlInputFileControl]

asp.net批量上传组件(可同时选择多个文件) asp.net批量上传组件(可同时选择多个文件), 很好的一个上传组件。。 立即下载

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项目时,经常遇到要上传文件的情况,出于安全考虑,我们不但要对上传文件的扩展名进行判断,同时还要对上传文件的大小等进行控制。如果每次遇到上传文件时都写一堆的代码,那不但浪费了时间,同时也会使程序的效率降低。于是我将上传文件写成一个类,这样以后就可以调用类的方法上传文件了。

  方法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个方法,即可很方便的上传文件,同时又能对文件进行控制,是不是很方便?不过如果想上传大文件,还是建议使用专门的上传大文件控件。

 

 

图片批量上传控件,多个图片一次性上传 图片批量上传控件,多个图片一次性上传,不用任何dll,多很多用户需求有大量的帮助! 立即下载

相关推荐

ASP.NET批量上传控件HtmlInputFiles

ASP.NET 调用封装DLL文件,实现文件或图片的批量上传功能。

asp.net 批量上传源码

asp.net 批量上传源码 asp.net批量上传

文件上传控件

支持多文件上传,兼容多浏览器,不依赖于flash,完整demo

2024年前端最新[Vue] 写一个简单的文件上传控件,学生党必看

但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。

2401_84434331的博客 833

[Vue] 写一个简单的文件上传控件,拥有百万粉丝的大牛讲述学Web前端的历程

")编写文件上传代码编写文件上传的帮助类,新建ajaxRequire.ts并键入以下内容://发送网络请求url: url,onUploadProgress: function (progressEvent) { //原生获取上传进度的事件},})///获得取消令牌。

2401_83974370的博客 1090

NET上传控件源码[HtmlInputFileControl]

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.as

425

批量上传。附带asp.net源码,附未例

批量上传。附带asp.net源码,附示例

ASP.NET 2.0之HtmlInputFile控件使用小结

在本文中,我将简要地总结ASP.NET 2.0中HtmlInputFile控件的使用要点,并给出一个典型的ASPX页面示例。     HtmlInputFile是把文件从一个浏览器上传到Web服务器的HTML工具。①为了充分利用HtmlInputFile控件,首先应确保服务器窗体的Enctype属性设置为multipart/form-data。     注意:在ASP.NET 2.0中,在生成该...

weixin_33895475的博客 227

asp.net(C#)批量上传图片(完整版)

转自:http://www.cnblogs.com/felix-wang/p/6343590.html 这篇关于ASP.Net批量上传图片的文章写得非常好,偶尔在网上看到想转载到这里,却费劲了周折。为了更新这篇文章,我用了近半个小时,网上的转载都残缺不全,希望大家有用的参考一下,作者写的非常好。 因本网站上传图片的需要,参考很多成熟的经验,在ASP.net平台上使用C#语言,做了这一自动...

LookingTomorrow的博客 2857

.net之 HtmlInputFile

预实现效果:(上传文件,此处为图片,去掉图片验证,可以上传其他文件)页面代码:代码<%@Pagelanguage="c#"Codebehind="testAdd.aspx.cs"AutoEventWireup="false"Inherits="DevSec.DH.Ums.DH.school.testAdd"%><HTML><HEAD>...

weixin_30648963的博客 238

asp.net HtmlInputFile属性

HtmlInputFile对象与HTML文件输入元素对应。你可用由id属性指定的名称来访问它。它有下列特性: * PostedFile:上传文件的内容。 * Accept:以逗号界定的MIME类型列表,指定可能提交的文件类型。 * MaxLength:要提交的文件的最长文件名长度(包括路径)。 * Size:用户输入/选择上传文件的文本框宽度。 以下是HTML输入控制的方法与特性: * FileN

anderberte 651

基于.NET的Windows窗体编程之WinForms文件监控

在实际应用开发中,有时候需要操作本地文件或文件夹,还需监控磁盘目录的变化,比如当新增或删除文件时,提示变更信息,以起到警示作用。合理的文件监控,还可以起到事半功倍的效果,今天我们以一些简单的小例子,简述基于.NET的Windows窗体编程中FileSystemWatcher控件的相关应用,仅供学习分享使用,如有不足之处,还请指正。

绳锯木断,水滴石穿,专心写文,无问西东!!! 264
上一篇: 我就用PowerDesigne建模
下一篇: 强大的.NET反编译工具Reflector及插件
JavaProgramers
博客等级 码龄22年 660粉丝 304原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值