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

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

 

代码
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

 

文件字节数组

 

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

 

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

 

posted @ 2010-01-07 21:17  my_lf  阅读(3538)  评论(0)    收藏  举报