.net上传控件

一.接收上传文件

(1)            FileUpLoad控件:

说明:用于用户向Web应用程序上传文件.

相关属性和方法

属性名

说明

Enable

用于禁用FileUpload控件

FileBytes

以字节数组形式获取上传文件内容

FileContent

以流(stream)形式获取上传文件内容

FileName

用于获得上传文件名字(包括扩展名)

HasFile

有上传文件时返回True

PostedFile

用于获取包装成HttpPostFile对象的上传文件

方法名

说明

Focus

设置FileUpLoad控件的焦点

SaveAs()

用于把上传文件保存到文件系统中[绝对路径]

HttpPostFile类相关属性和方法

属性名

说明

ContentLength

用于获得上传文件的字节大小

ContentType

用于获得上传文件的类型

FileName

用于获得上传文件的名字

InputStream

把上传文件当成流来获取

方法名

说明

SaveAs

用于把上传文件保存到文件系统中

(2)            把文件保存到文件系统

原理:用SaveAs方法把文件上传到指定的地方

案例:上传文件到服务器上某一个位置,并且把该目录下面的所有图片显示出来

代码
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> protected void btUp_Click( object sender, EventArgs e)

    {

       
if (fileUp.HasFile) // 判断是否有文件

        {

            Literal lt
= new Literal(); // 定义一个Literal用来显示脚本

           
if (CheckFileType(fileUp.FileName)) // 检查上传文件的类型

            {

               
string filePath = " ~/file/ " + fileUp.FileName;

                fileUp.SaveAs(MapPath(filePath));
// 把文件上传到服务器的绝对路径上

                lt.Text
= " <script>alert('文件上传成功!~')</script> " ;

            }

           
else

            {

                lt.Text
= " <script>alert('文件类型不正确!~')</script> " ;

            }

           
this .Controls.Add(lt);

        }

    }

   
// 用来获取文件类型

   
public bool CheckFileType( string fileName)

    {

       
// 获取文件的扩展名,前提要用这个方法必须引入命名空间io

       
string ext = Path.GetExtension(fileName);

       
switch (ext.ToLower())

        {

           
case " .gif " :

               
return true ;

           
case " .png " :

               
return true ;

           
case " .jpeg " :

               
return true ;

           
case " jpg " :

               
return true ;

           
default :

               
return false ;

        }

    }

注意事项:为了使文件能上传到服务器,ASP.NET页面关联的Window账户必须有足够的权限来保存文件,设置权限的方法,在要上传的目录中点击右键—选择安全----为NETWORK SERVICE或ASP.NET账户提供该文件夹的写权限

.net文件上传 - jeyor - jeyorxiao 的博客

把上传的文件显示到DataList中

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> string upPath = MapPath( " ~/file/ " );

        DirectoryInfo dir
= new DirectoryInfo(upPath);

        DataList1.DataSource
= dir.GetFiles();

        DataList1.DataBind();

(3)            把文件保存到数据库

优缺点:

优点:可以避免文件系统权限问题,其次把文件保存在数据库中能更方便地备份信息

缺点:在数据库中保存和检索文件会给服务器端增加压力

           原理:

              利用FileUpLoad控件的FileBytes属性来获取字节数组

           数据表格设计:

字段名

数据类型

说明

Id

Int(identity)

文件编号

FileName

varchar(50)

文件名

FileLength

Int

文件大小

FileFiter

Varchar(20)

文件扩展名

FileBytes

Image

文件字节数组

事例:将文件上传到数据库中

代码
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> protected void btUp_Click( object sender, EventArgs e)

    {

       
if (fileUp.HasFile)

        {

           
string strCon = " server=.;database=test;uid=sa;pwd= " ;

            SqlConnection sqlcon
= new SqlConnection(strCon);

            sqlcon.Open();

            SqlCommand sqlcom
= new SqlCommand();

            sqlcom.Connection
= sqlcon;

            sqlcom.CommandText
= " insert into [File] values(@FileName,@FileLength,@FileFiter,@FileBytes) " ;

            sqlcom.Parameters.Add(
" @FileName " , SqlDbType.VarChar).Value = fileUp.FileName;

            sqlcom.Parameters.Add(
" @FileLength " , SqlDbType.Int).Value = fileUp.FileBytes.Length;

            sqlcom.Parameters.Add(
" @FileFiter " , SqlDbType.VarChar).Value = Path.GetExtension(fileUp.FileName);

            sqlcom.Parameters.Add(
" @FileBytes " , SqlDbType.Image).Value = fileUp.FileBytes;

            sqlcom.ExecuteNonQuery();

            sqlcon.Close();

        }

    }

(4)            上传大文件

说明:ASP.NET中默认是不能提交大于4MB的表单,如果超过这个这个值就会报异常,解决方法需要配置web.config文件

<system.web>

<httpRuntime maxRequestLength="10240" requestLengthDiskThreshold="100" executionTimeout="600" />

</system.web>

maxRequestLength文件上传的最大字节数,以kb为单位

requestLengthDiskThreshold文件上传时缓存的大小

executionTimeout文件上传的最大时间以秒为单位

(5)            总结

(1)            System.IO.GetExtension()提取指定路径的扩展名

(2)            MapPath()获取指定虚拟路径对应的服务器物理路径

(3)            为了防止文件名字相同,我们一般用上传的当前时间为文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值