AJAX Control Toolkit Release
September 2009 Release
Version 3.0.30930
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AsyncFileUpload._Default" %></p><p><%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %></p><p><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></p><p><html xmlns="http://www.w3.org/1999/xhtml" ><br /><head id="Head1" runat="server"><br /><title>AsyncFileUpload, ASP.NET, AJAX</title></p><p><script type="text/javascript"><br />var begin;<br />function AsyncFileUpload1_UploadError(sender, args)<br />{<br /> document.getElementById('lblUpload').innerText = "對不起,檔案“" + args.get_fileName() + "”上傳出錯,原因:" + args.get_errorMessage() ;<br />}</p><p>function AsyncFileUpload1_StartUpload(sender, args)<br />{<br /> begin=new Date();<br /> document.getElementById('lblUpload').innerText = "檔案“" + args.get_fileName() + "”正在上傳,請稍等";<br />}</p><p>function AsyncFileUpload1_UploadComplete(sender, args)<br />{<br /> var t=(new Date()).valueOf() - begin.valueOf();<br /> var speed = Math.round(args.get_length( ) / 1.024 / t);<br /> document.getElementById('lblUpload').innerText = "上傳 " + args.get_length() + " 位元組,用時 " + t + " 毫秒,速度:" + speed + " KB/s";<br />}<br /></script><br /></head><br /><body style="font-size:14px; font-family:宋體"><br /><form id="form1" runat="server"><br /><div><br /><div id="content"><br /><asp:ScriptManager ID="ScriptManager1" runat="server"><br /></asp:ScriptManager><br /><table width="100%" border="1" cellspacing="0" cellpadding="5"><br /><tr><br /><td>上傳檔案:</td><br /><td><br /><asp:UpdatePanel ID="UpdatePanel1" runat="server"><br /><ContentTemplate><br /><cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"<br />onclientuploadcomplete="AsyncFileUpload1_UploadComplete"<br />onclientuploaderror="AsyncFileUpload1_UploadError"<br />onclientuploadstarted="AsyncFileUpload1_StartUpload"<br />onuploadedcomplete="AsyncFileUpload1_UploadedComplete" /><br /><asp:Label ID="lblUpload" runat="server"></asp:Label><br /></ContentTemplate></p><p><Triggers><br /><asp:AsyncPostBackTrigger ControlID="AsyncFileUpload1" EventName="UploadedComplete" /><br /></Triggers><br /></asp:UpdatePanel><br /></td><br /></tr></p><p><tr><br /><td> </td><br /><td><br /><asp:Label ID="Label1" runat="server" Text="1"></asp:Label> <br /><asp:Label ID="Label2" runat="server" Text="左側數值用於測試是否整個頁面被重新整理!" ForeColor="Red"></asp:Label><br /></td><br /></tr><br /></table><br /></div><br /></div><br /></form><br /></body><br /></html>
Default.aspx.cs
using System;<br />using System.Collections;<br />using System.Configuration;<br />using System.Data;<br />using System.Data.OleDb;<br />using System.Linq;<br />using System.Web;<br />using System.Web.Security;<br />using System.Web.UI;<br />using System.Web.UI.HtmlControls;<br />using System.Web.UI.WebControls;<br />using System.Web.UI.WebControls.WebParts;<br />using System.Xml.Linq;</p><p>namespace AsyncFileUpload<br />{<br /> public partial class _Default : System.Web.UI.Page<br /> {<br /> protected void Page_Load(object sender, EventArgs e)<br /> {<br /> if (IsPostBack)<br /> {<br /> Label1.Text = (int.Parse(Label1.Text) + 1).ToString();<br /> }<br /> }</p><p> protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)<br /> {<br /> if (AsyncFileUpload1.HasFile)<br /> {<br /> AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("./") + AsyncFileUpload1.FileName);<br /> }<br /> }<br /> }<br />}
若要上傳大檔案,需要修改 Web.config 的值,
在 system.web 節新增內容
<system.web>
<!-- maxRequestLength 控制允許上傳的最大檔案大小,單位是 KB -->
<httpRuntime maxRequestLength="2097151"/>
...
</system.web>