HttpPostedFile类的使用方法

 

HttpPostedFile注意事项:

(1)    HttpPostedFile提供对客户端已上载的单独文件的访问。

(2)    对于客户端已上载的文件,最好先保存到服务器,再访问;而不是直接访问。

(3)     HttpPostedFile file = Request.Files[0]; 变量file只是对文件的引用,对file的任何操作都直接影响到已经上载的文件。

(4)  使用StreamReader 读取文件后,要调用Close方法关闭文件流,否则SaveAs相同文件名时,提示文件被占用。

 

下面通过两种方式访问已经上载的文件。

 

一、先保存到服务器,再访问。

 

1,新建一个test.aspx页面,前台代码如下:

 

 

 

 

 

<form runat="server"  method="post" enctype="multipart/form-data">



 



<asp:FileUpload ID="FileUpload1" runat="server" />



 



<asp:Button ID="btnAdd" runat="server" Text="上传" />



 



</form>

 

 

效果图如下:

 

 HttpPostedFile类的使用方法

2,后台代码如下:

 

       

 protected void Page_Load(object sender, EventArgs e)



        {



 



            //(0) 判断文件是否存在



            if (Request.Files.Count < 1)



            {



                return;



            }



 



            SaveToRead();



 



        



         



        }



 



 



 



 



 



        // 1,先保存,再读取文件



        public void SaveToRead()



        {



            // (1)获取上传的文件,保存到 应用程序基目录



            HttpPostedFile file = Request.Files[0];



            string sFileName = System.AppDomain.CurrentDomain.BaseDirectory + "上传文件.txt";



            file.SaveAs(sFileName);



 



            // (2)从服务器上读取文件



            StreamReader reader = new StreamReader(sFileName, Encoding.GetEncoding("GB2312"));



            string temp = reader.ReadLine();



            Response.Write(temp);



 



            // (3)关闭文件流



            reader.Close();



 



            // (4)其他函数需要读取时,从新加载文件



            reader = new StreamReader(sFileName, Encoding.GetEncoding("GB2312"));



            temp = reader.ReadLine();



            Response.Write(temp);



 



        }



 

 

 

3,运行效果图如下:

 

 HttpPostedFile类的使用方法

 

二、              直接访问客户端上载的文件

 

1,  前台代码不变,后台添加如下代码:

      

  protected void Page_Load(object sender, EventArgs e)



        {



 



            //(0) 判断文件是否存在



            if (Request.Files.Count < 1)



            {



                return;



            }



 



            SaveToRead();



 



            ReadFile();



 



         



        }



 



 



        //2,直接读取上传的文件



        public void ReadFile()



        {



            //(1)将上传的文件同时赋值给file1和file2



            HttpPostedFile file1 = Request.Files[0];



            HttpPostedFile file2 = Request.Files[0];



 



            //(2)判断文件为空的方法



            if (file1 == null || file1.ContentLength == 0 || string.IsNullOrEmpty(file1.FileName))



            {



                //文件为空,写入日志  



                Response.Write("文件为空");



                return;



            }



 



            //(3)获取文件流的方法



            Stream stream = file1.InputStream;



            StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("GB2312"));



 



            //(4) 读取文件内容的方法



            string temp = reader.ReadLine();



 



            //(5) 关闭文件流



            reader.Close();



 



 



            //(6) 查看file1和file2的长度均为0



            Response.Write("file1的长度:" + file1.ContentLength + "; file2的长度:" + file2.ContentLength);



        }



 

 

 

2,  运行效果如下:

 HttpPostedFile类的使用方法

你可能感兴趣的:(File类)