AJAX Control Toolkit Release
September 2009 Release
Version 3.0.30930
Default.aspx
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>AsyncFileUpload, ASP.NET, AJAX</title>
<script type="text/javascript">
var begin;
function AsyncFileUpload1_UploadError(sender, args)
{
document.getElementById('lblUpload').innerText = "对不起,文件“" + args.get_fileName() + "”上传出错,原因:" + args.get_errorMessage() ;
}
function AsyncFileUpload1_StartUpload(sender, args)
{
begin=new Date();
document.getElementById('lblUpload').innerText = "文件“" + args.get_fileName() + "”正在上传,请稍等";
}
function AsyncFileUpload1_UploadComplete(sender, args)
{
var t=(new Date()).valueOf() - begin.valueOf();
var speed = Math.round(args.get_length( ) / 1.024 / t);
document.getElementById('lblUpload').innerText = "上传 " + args.get_length() + " 字节,用时 " + t + " 毫秒,速度:" + speed + " KB/s";
}
</script>
</head>
<body style="font-size:14px; font-family:宋体">
<form id="form1" runat="server">
<div>
<div id="content">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<table width="100%" border="1" cellspacing="0" cellpadding="5">
<tr>
<td>上传文件:</td>
<td>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<cc1:AsyncFileUpload ID="AsyncFileUpload1" runat="server"
onclientuploadcomplete="AsyncFileUpload1_UploadComplete"
onclientuploaderror="AsyncFileUpload1_UploadError"
onclientuploadstarted="AsyncFileUpload1_StartUpload"
onuploadedcomplete="AsyncFileUpload1_UploadedComplete" />
<asp:Label ID="lblUpload" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="AsyncFileUpload1" EventName="UploadedComplete" />
</Triggers>
</asp:UpdatePanel>
</td>
</tr>
<tr>
<td> </td>
<td>
<asp:Label ID="Label1" runat="server" Text="1"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="左侧数值用于测试是否整个页面被刷新!" ForeColor="Red"></asp:Label>
</td>
</tr>
</table>
</div>
</div>
</form>
</body>
</html>
Default.aspx.cs
namespace AsyncFileUpload
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
Label1.Text = (int.Parse(Label1.Text) + 1).ToString();
}
}
protected void AsyncFileUpload1_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
if (AsyncFileUpload1.HasFile)
{
AsyncFileUpload1.PostedFile.SaveAs(Server.MapPath("./") + AsyncFileUpload1.FileName);
}
}
}
}
若要上传大文件,需要修改 Web.config 的值,
在 system.web 节添加内容
<system.web>
<!-- maxRequestLength 控制允许上传的最大文件大小,单位是 KB -->
<httpRuntime maxRequestLength="2097151"/>
...
</system.web>