问题描述
- 我这样做asp.net异步文件上传进度条
-
前台两个请求
1.上传文件的请求
2.获取上传进度的请求1.
$("#ufrm").ajaxSubmit({ url: "ReceivFile.ashx", type: "post", success: function (data) { ...
2.
$.ajax({ type: "post", url: "Filepro.aspx", data: { type: "gp" }, success: function (data) { ...
后台两个处理:
1.接收文件的处理int readcount = 0; int tcount = 0; tcount = files.ContentLength; byte[] buffer=new byte[10]; System.IO.FileStream fs= System.IO.File.Create(context.Server.MapPath(pic)); HttpContext.Current.Session["fp"] = "1"; while ((readcount=stream.Read(buffer,0,10))>0) { fs.Write(buffer, 0, readcount); HttpContext.Current.Session["fp"] = fs.Length + "/" + tcount; }
2.返回进度
if (tag.Equals("gp")) { if (Session["fp"] != null) { Response.Write(Session["fp"].ToString()); Response.End(); } else { Response.Write("NULL"); Response.End(); } }
服务器接收文件的过程中把上传的进度存到session中 前台请求上传进度的时候 服务器从这个session里获取值发送给前台 前台再显示出来
我这样去实现上传的进度显示可以吗?
现在的问题是 返回的进度总是NULL 像是被接收文件那个线程给独占了一样 应该怎样去改进 求指教
我查了这两个请求(上传文件请求和获取进度请求)的sessionid是一样的!
解决方案
因为用了session,其他所有请求都会被挂起,显示个loading...图片就好了,上传完毕隐藏起来
asp.net/asp网站浏览器打开一个长时间运行的页面同时打开其他页面为什么被挂起
解决方案二:
ASP.NET带进度条多文件上传
时间: 2024-10-29 15:16:03