AJAX Control Toolkit的AsynFileUpload控制項

來源:互聯網
上載者:User

AJAX Control Toolkit最近有兩個新的控制項添加了進來。你可以去codeplex網站下載最新的版本。新增的兩個控制項:

1.       SeaDragon Java Script Code(SJC) – SJC控制項使用SeaDragon指令碼來顯示一個圖片,通過滑鼠的點擊按鈕可以放大和縮小圖片,你可以在這個地方看它的demo。

2.       AsyncFileUpload – ajaxcontroltool kit終於有了一個上傳檔案的ajax控制項。當上傳檔案時會有一個圖片顯示,而當圖片上傳完成時會觸發用戶端和伺服器端的事件。你可以在這裡看它的demo.

在這篇文章中說明一下如何AsyncFileUpload的優缺點和如何使用。

注意: 這個控制項只在.NET 3.5或更高版本上才能工作。

 

優缺點介紹:

Asp.net的上傳檔案控制項都不能使用updatepanel.如果你需要在updatePanel中使用上傳檔案控制項必須使用一個trigger來postpback進行上傳檔案。這個fileupload控制項解決了以前的問題,可以直接在updatepanel下工作。優點如下: 它能夠在update panel下工作。 它上傳檔案時不需要postback. 它提供用戶端和伺服器端的德事件。 它可以通過設定不同的顏色來顯示檔案上傳是否成功。比如:上傳成功時顯示綠色,失敗時顯示為紅色。

 

缺點: 一旦開始上傳檔案無法取消。 無法跟蹤上傳進度,百分比。 檔案儲存在session中。也就是說每次開啟頁面都會顯示上次上傳的最後那個檔案的資訊。

 

屬性和方法:

 

使用控制項:

 

1.       在aspx頁面註冊控制項。

   <%@ Register Assembly="AjaxControlToolkit"

Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

2.       添加一個AsyncFileUpload控制項。

<cc1:AsyncFileUpload ID="AsyncFileUpload1" Width="400px" runat="server"

OnClientUploadError="uploadError" OnClientUploadStarted="StartUpload"

OnClientUploadComplete="UploadComplete"

CompleteBackColor="Lime" UploaderStyle="Modern"

ErrorBackColor="Red" ThrobberID="Throbber"

onuploadedcomplete="AsyncFileUpload1_UploadedComplete"

UploadingBackColor="#66CCFF" />

3.       可以在update panel裡面或外面添加一個AsynFileUpload控制項。大部分屬性已經在上面設定完成。Throbber用來顯示檔案上傳時應該顯示的圖片。這裡設定為ID為Throbber的label:

<asp:Label ID="Throbber" runat="server" Style="display: none">

<img src="Images/indicator.gif" align="absmiddle" alt="loading" />

</asp:Label>

4.       這裡還需要一個label來顯示檔案最終是否上傳成功。它的顯示內容由javascript來產生。也就是用戶端事件執行的代碼。

<asp:Label ID="lblStatus" runat="server" Style="font-family: Arial;

font-size: small;"></asp:Label>

5.       當上傳檔案完成時執行的用戶端代碼:

    <script type="text/javascript" language="javascript">

 

function uploadError(sender,args)

{

document.getElementById('lblStatus').innerText = args.get_fileName(),

"<span style='color:red;'>" + args.get_errorMessage() + "</span>";

}

 

function StartUpload(sender,args)

{

  document.getElementById('lblStatus').innerText = 'Uploading Started.';

}

 

function UploadComplete(sender,args)

{

 var filename = args.get_fileName();

 var contentType = args.get_contentType();

 var text = "Size of " + filename + " is " + args.get_length() + " bytes";

 if (contentType.length > 0)

 {

  text += " and content type is '" + contentType + "'.";

  }

  document.getElementById('lblStatus').innerText = text;

}

 

</script>

6.       當上傳檔案完成時執行的伺服器端代碼:

protected void AsyncFileUpload1_UploadedComplete

(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)

{

  System.Threading.Thread.Sleep(5000);

  if (AsyncFileUpload1.HasFile)

  {

    string strPath = MapPath("~/Uploads/") + Path.GetFileName(e.filename);

    AsyncFileUpload1.SaveAs(strPath);

  }

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.