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>

 

 

效果圖如下:

 

 

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,運行效果圖如下:

 

 

 

二、              直接訪問客戶端上載的文件

 

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,  運行效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM