<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> <mce:script type="text/javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></mce:script> <mce:script type="text/javascript"><!-- function ajaxGet() { $.post("GetSessionHandler.ashx", { date: new Date() }, function(data) { var num = parseInt(data); if ((!isNaN(num)) && (num < 100)) { $("#result").text(num + "%"); window.setTimeout(ajaxGet, 1000); } else if ((!isNaN(num)) && (num == 100)) { $("#result").text("100%"); window.setTimeout('$("#result").text("发送已完成");', 1000); } } ); } // --></mce:script> </head> <body> <form id="form1" runat="server"> <asp:FileUpload ID="file" runat="server" /> <asp:Button ID="btnOK" runat="server" Text="上传" οnclick="btnOK_Click" /> <div id='result'></div> </form> </body> </html> 后台: protected void btnOK_Click(object sender, EventArgs e) { if (file.PostedFile != null && file.PostedFile.ContentLength != 0) { Session["Schedule"] = "0"; //启动一个线程 Thread th = new Thread(new ThreadStart(Upload)); th.Start(); //注册客户端脚本 ClientScript.RegisterStartupScript(this.GetType(), "ajaxGet", "ajaxGet()", true); } } private void Upload() { var postfile = file.PostedFile; int length = postfile.ContentLength; string path = Server.MapPath(@"~/upload"); int UploadLength = 0; int bufferSize = 10000; byte[] buffer = new byte[bufferSize]; string fileName = Path.Combine(path, string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMddhhmmss"), Path.GetExtension(postfile.FileName))); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { while (UploadLength < length) { int bytes = postfile.InputStream.Read(buffer, 0, bufferSize); fs.Write(buffer, 0, bytes); UploadLength += bytes; Session["Schedule"] = (int)Math.Ceiling((double)UploadLength / (double)length * 100); Thread.Sleep(100); } } Session["Schedule"] = 100; } 一般处理文件代码如下: public class GetSessionHandler : IHttpHandler,System.Web.SessionState.IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; String tempStr = (context.Session["Schedule"] ?? "0").ToString(); context.Response.Write(tempStr); } public bool IsReusable { get { return false; } } } 原帖:http://topic.csdn.net/u/20100727/10/6710495c-a47c-45ab-8cf2-bd8f57ac5d78.html