文档章节

fileupload上传显示进度(未测试)

h
 heiyexue
发布于 2014/06/15 21:17
字数 292
阅读 11
收藏 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  

© 著作权归作者所有

共有 人打赏支持
h
粉丝 2
博文 85
码字总数 78924
作品 0
哈尔滨
私信 提问
Commons FileUpload

1 概述 Commons FileUpdate包很容易为你的Servlet和web应用程序添加健壮的、高性能的文件上传功能。 FileUpload解析遵循RFC 1876(在HTML中基于表单的文件上传)HTTP请求。即,如果一个HTTP请...

Leech
2015/08/02
0
0
几种上传文件组件的性能比较

近两天来由于项目需要使用上传组件,于是我仔细分析了Cos和FileUpload的源代码,并对它们的性能进行了测试比较,使用2M、20M、45M、200M的上传大小测试三种组件所花费的时间(单位为ms)结果...

oschina
2008/09/09
13.8K
15
spring mvc文件上传实现进度条

文件上传应该大部分人都接触过,一般都是基于commons-fileupload组件来实现,SpringMVC的文件上传功能也是在commons-fileupload组件提供的功能上面做了一些包装功能,使文件上传开发更容易方...

小天120
2014/02/10
0
20
Apache Commons-FileUpload 1.3 发布

Apache 的文件上传组件 commons-fileupload 今天发布了 1.3 版本,该版本修复了一个重要的安全问题: SECURITY - CVE-2013-0248, see http://seclists.org/fulldisclosure/2013/Mar/76 其他改...

oschina
2013/03/28
3.6K
4
struts2 上传文件添加进度条

为了给用户更好体验,最进在struts2添加了上传进度条让用户知道上传过程时间,增加有好度。 由于以前做个 文件上传 没有用过 组件进行解析,直接用servlet 解析的,而现在 struts2 框架使用 ...

hlevel
2013/08/14
0
6

没有更多内容

加载失败,请刷新页面

加载更多

分布式之延时任务方案解析

方案分析 (1)数据库轮询 思路 该方案通常是在小型项目中使用,即通过一个线程定时的去扫描数据库,通过订单时间来判断是否有超时的订单,然后进行update或delete等操作 实现 博主当年早期是用...

微笑向暖wx
30分钟前
1
0
博客目录

1.剑指offer目录 剑指offer目录 2.开放的面试题 开放面试题目录

细节探索者
31分钟前
1
0
自定义线程池

自定义线程工厂: public class CustomThreadFactory implements ThreadFactory { private static final Logger LOGGER = LoggerFactory.getLogger(CustomThreadFactory.class); pu......

hensemlee
今天
2
0
记一次oom内核优化记录:vm.lower_zone_protection

情景 最近gitlab服务会偶发性500,当前机器部署了gitlab、nfs等服务,经过排查发现是nfsd引发oom,导致系统运行不畅。处理过程如下: 事故现场 开发在使用gitlab的时候发现,偶发性的出现500...

阿dai
今天
6
0
Spring Batch JSON 支持

Spring Batch 4.1 开始能够支持 JSON 格式了。这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [  {    "isin": "123",    ...

honeymose
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部