.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方法把文件上传到指定的地方

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

 

ExpandedBlockStart.gif 代码
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中

 

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

 

文件字节数组

 

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

 

ExpandedBlockStart.gif 代码
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)            为了防止文件名字相同,我们一般用上传的当前时间为文件名

 

转载于:https://www.cnblogs.com/lf78995525/archive/2010/01/07/1641608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值