同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁 優(yōu)化推廣 ASP.NET - FileUpload Web 服務(wù)器控件概述(上)

ASP.NET - FileUpload Web 服務(wù)器控件概述(上)

來源: | 時(shí)間:2013/4/23 21:52:18 |

    使用 FileUpload 控件,可以為用戶提供一種將文件從其計(jì)算機(jī)發(fā)送到服務(wù)器的方法。

一、功能

可使用 FileUpload 控件執(zhí)行下列操作:

·使用戶能夠上載存儲(chǔ)在服務(wù)器上的特定位置的文件。

·限制可上載的文件的大小。

·在存儲(chǔ)上載的文件之前檢查其屬性。



二、背景

FileUpload 控件使用戶能夠上載圖片、文本文件或其他文件。FileUpload 控件顯示一個(gè)文本框,在此用戶可以鍵入希望上載到服務(wù)器的文件的名稱。該控件還顯示一個(gè)“瀏覽”按鈕,該按鈕顯示一個(gè)文件導(dǎo)航對(duì)話框。(顯示的對(duì)話框取決于用戶計(jì)算機(jī)的操作系統(tǒng)。) 出于安全方面的考慮,不能將文件名預(yù)加載到 FileUpload 控件中。



      1、處理上載的文件

當(dāng)用戶已選定要上載的文件并提交頁時(shí),該文件將作為請(qǐng)求的一部分上載。文件將被完整地緩存在服務(wù)器內(nèi)存中。文件完成上載后,頁代碼開始運(yùn)行。

可以通過下面的方式訪問上載的文件:

·作為在 FileUpload 控件的 FileBytes 屬性中公開的字節(jié)數(shù)組。

·作為在 FileContent 屬性中公開的流。

·作為 PostedFile 屬性中類型 HttpPostedFile 的對(duì)象。PostedFile 對(duì)象公開一些屬性,如 ContentType 和 ContentLength 屬性,這些屬性為您提供有關(guān)上載的文件的信息。

在代碼運(yùn)行時(shí),可以檢查文件的特征,例如文件的名稱、大小和 MIME 類型,然后可以保存該文件??梢詫⑽募?dāng)作字節(jié)數(shù)組或流來使用。另外,F(xiàn)ileUpload 控件和 HttpPostedFile 對(duì)象都支持將文件寫入磁盤的 SaveAs 方法。

對(duì)所上載文件的保存位置,沒有固有限制。但是,若要保存文件,asp.net 進(jìn)程必須具有在指定位置創(chuàng)建文件的權(quán)限。此外,還可能將應(yīng)用程序配置為要求使用絕對(duì)路徑(而不是相對(duì)路徑)來保存文件,這是一種安全措施。如果將 httPRuntime 配置元素的 requireRootedSaveAsPath 屬性設(shè)置為 true(默認(rèn)值),則在保存上載的文件時(shí)必須提供絕對(duì)路徑。

說明: 可以創(chuàng)建基于應(yīng)用程序根文件夾的絕對(duì)路徑,方法是使用 HttpServerUtility 類的 MapPath 方法,并將表示應(yīng)用程序根文件夾的顎化符 (~) 傳遞給該方法。

可上載的最大文件的大小取決于 MaxRequestLength 配置設(shè)置的值。如果用戶試圖上載大于最大允許值的文件,則上載會(huì)失敗。



      2、在部分頁更新中使用 FileUpload 控件

FileUpload 控件設(shè)計(jì)為僅用于回發(fā)方案,而不適用于部分頁呈現(xiàn)期間的異步回發(fā)方案。當(dāng)您在 UpdatePanel 控件內(nèi)部使用 FileUpload 控件時(shí),必須使用作為面板的一個(gè) PostBackTrigger 對(duì)象的控件來上載文件。UpdatePanel 控件用于更新頁的選定區(qū)域,而不是使用回發(fā)來更新整個(gè)頁面。



3、安全性和 FileUpload 控件

通過使用 FileUpload 控件,用戶可以上載可能存在惡意的文件,其中包含腳本文件和可執(zhí)行文件。無法預(yù)先限制用戶可以上載的文件。如果希望限制用戶可以上載的文件的類型,則必須在上載文件后檢查文件特征,如文件的文件擴(kuò)展名和文件的 ContentType 屬性的值。

      說明: 在提交頁面之前,可以使用客戶端腳本來檢查用戶在文本框中鍵入的文件名。盡管在客戶端執(zhí)行文件名檢查會(huì)很有用,但這并不能保證用戶無法上載不安全的文件類型,如可執(zhí)行文件。



三、如何:使用 FileUpload Web 服務(wù)器控件上載文件

      用 FileUpload Web 服務(wù)器控件,您可以向用戶提供一種將文件從其計(jì)算機(jī)發(fā)送到服務(wù)器的方法。要上載的文件將在回發(fā)期間作為瀏覽器請(qǐng)求的一部分提交給服務(wù)器。在文件完成上載后,您可以用代碼管理該文件。

      說明: 可上載的最大文件大小取決于 MaxRequestLength 配置設(shè)置的值。如果用戶試圖上載超過最大文件大小的文件,上載就會(huì)失敗。

      

1、向頁面添加 FileUpload 控件。

說明: 出于安全方面的考慮,不能將文件名預(yù)加載到 FileUpload 控件中。



      2、在事件(如該頁的 Load 事件)的處理程序中,執(zhí)行下面的操作:

           ·通過測(cè)試 FileUpload 控件的 HasFile 屬性,檢查該控件是否有上載的文件。

·檢查該文件的文件名或 MIME 類型以確保用戶已上載了您要接收的文件。若要檢查 MIME 類型,請(qǐng)獲取作為 FileUpload 控件的 PostedFile 屬性公開的 HttpPostedFile 對(duì)象。然后,通過查看已發(fā)送文件的 ContentType 屬性,就可以獲取該文件的 MIME 類型。

安全說明: 在某些情況下,已上載文件的 MIME 類型可能是偽造的,因此只檢查文件的 MIME 類型不是一種可靠的安全檢查。

·將該文件保存到您指定的位置。您可以調(diào)用 HttpPostedFile 對(duì)象的 SaveAs 方法?;蛘?,還可以使用 HttpPostedFile 對(duì)象的 InputStream 屬性,以字節(jié)數(shù)組或字節(jié)流的形式管理已上載的文件。

下面的示例演示如何使用已上載的文件。該代碼根據(jù)允許的文件擴(kuò)展名的硬編碼列表檢查已上載文件的文件擴(kuò)展名,并拒絕所有其他類型的文件。然后,將該文件寫入當(dāng)前網(wǎng)站的 UploadedImages 文件夾中。用已上載文件在客戶端計(jì)算機(jī)上的文件名保存該文件。由于 HttpPostedFile 對(duì)象的 FileName 屬性返回該文件在客戶端計(jì)算機(jī)上的完整路徑,因此會(huì)使用 FileUpload 控件的 FileName 屬性。

安全說明: 請(qǐng)不要向用戶顯示所保存文件的路徑和文件名;這樣做可能會(huì)將有用的信息泄露給惡意用戶。

protected void Page_Load(object sender, EventArgs e)

{

    if(IsPostBack)

    {

        Boolean fileOK = false;

        String path = Server.MapPath("~/UploadedImages/");

        if (FileUpload1.HasFile)

        {

            String fileExtension =

                System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();

            String[] allowedExtensions =

                {".gif", ".png", ".jpeg", ".jpg"};

          for (int i = 0; i < allowedExtensions.Length; i++)

          {

               if (fileExtension == allowedExtensions[i])

               {

                    fileOK = true;

               }

          }

        }



        if (fileOK)

        {

            try

            {

                FileUpload1.PostedFile.SaveAs(path

                    + FileUpload1.FileName);

                Label1.Text = "File uploaded!";

            }

            catch (Exception ex)

            {

 

服務(wù)熱線

153 8323 9821

功能和特性

價(jià)格和優(yōu)惠

網(wǎng)站和維護(hù)

推廣和優(yōu)化

微信服務(wù)號(hào)