fileupload上传显示进度(未测试)
博客专区 > heiyexue 的博客 > 博客详情
fileupload上传显示进度(未测试)
heiyexue 发表于4年前
fileupload上传显示进度(未测试)
  • 发表于 4年前
  • 阅读 9
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

  1. <html xmlns="http://www.w3.org/1999/xhtml" >  
  2. <head runat="server">  
  3.     <title>无标题页</title>  
  4.     <mce:script type="text/javascript" src="jquery-1.4.2.min.js" mce_src="jquery-1.4.2.min.js"></mce:script>  
  5.      <mce:script type="text/javascript"><!--  
  6.     function ajaxGet()  
  7.     {  
  8.         $.post("GetSessionHandler.ashx", { date: new Date() },  
  9.                 function(data) {  
  10.                     var num = parseInt(data);                      
  11.                     if ((!isNaN(num)) && (num < 100)) {  
  12.                         $("#result").text(num + "%");  
  13.                         window.setTimeout(ajaxGet, 1000);  
  14.                     }  
  15.                     else if ((!isNaN(num)) && (num == 100)) {  
  16.                         $("#result").text("100%");  
  17.                         window.setTimeout('$("#result").text("发送已完成");', 1000);  
  18.                     }  
  19.                 }  
  20.             );  
  21.     }  
  22.       
  23. // --></mce:script>  
  24. </head>  
  25. <body>  
  26.     <form id="form1" runat="server">  
  27.    <asp:FileUpload ID="file" runat="server" />  
  28.     <asp:Button ID="btnOK" runat="server" Text="上传" onclick="btnOK_Click" />      
  29.     <div id='result'></div>  
  30.     </form>  
  31. </body>  
  32. </html>  
[c-sharp]  view plain copy
  1. 后台:  
  2.   protected void btnOK_Click(object sender, EventArgs e)  
  3.         {  
  4.             if (file.PostedFile != null && file.PostedFile.ContentLength != 0)  
  5.             {  
  6.                 Session["Schedule"] = "0";  
  7.                 //启动一个线程  
  8.                 Thread th = new Thread(new ThreadStart(Upload));  
  9.                 th.Start();  
  10.                 //注册客户端脚本   
  11.                 ClientScript.RegisterStartupScript(this.GetType(), "ajaxGet""ajaxGet()"true);  
  12.             }  
  13.         }  
  14.         private void Upload()  
  15.         {  
  16.             var postfile = file.PostedFile;  
  17.             int length = postfile.ContentLength;  
  18.             string path = Server.MapPath(@"~/upload");  
  19.             int UploadLength = 0;  
  20.             int bufferSize = 10000;  
  21.             byte[] buffer = new byte[bufferSize];  
  22.             string fileName = Path.Combine(path, string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMddhhmmss"), Path.GetExtension(postfile.FileName)));  
  23.             using (FileStream fs = new FileStream(fileName, FileMode.Create))  
  24.             {  
  25.                 while (UploadLength < length)  
  26.                 {  
  27.                     int bytes = postfile.InputStream.Read(buffer, 0, bufferSize);  
  28.                     fs.Write(buffer, 0, bytes);  
  29.                     UploadLength += bytes;  
  30.                     Session["Schedule"] = (int)Math.Ceiling((double)UploadLength / (double)length * 100);  
  31.                     Thread.Sleep(100);  
  32.                 }  
  33.             }  
  34.             Session["Schedule"] = 100;  
  35.         }  
[c-sharp]  view plain copy
  1. 一般处理文件代码如下:  
  2. public class GetSessionHandler : IHttpHandler,System.Web.SessionState.IRequiresSessionState  
  3.     {  
  4.         public void ProcessRequest(HttpContext context)  
  5.         {  
  6.             context.Response.ContentType = "text/plain";  
  7.             String tempStr = (context.Session["Schedule"] ?? "0").ToString();  
  8.             context.Response.Write(tempStr);  
  9.         }  
  10.         public bool IsReusable  
  11.         {  
  12.             get  
  13.             {  
  14.                 return false;  
  15.             }  
  16.         }  
  17.     }  
  18. 原帖:http://topic.csdn.net/u/20100727/10/6710495c-a47c-45ab-8cf2-bd8f57ac5d78.html  
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 79
码字总数 78924
×
heiyexue
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: