我这样做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是一样的!

1个回答

因为用了session,其他所有请求都会被挂起,显示个loading...图片就好了,上传完毕隐藏起来
asp.net/asp网站浏览器打开一个长时间运行的页面同时打开其他页面为什么被挂起

w359030056
Where___ 原来是排队去了  谢谢你帮我提供资料  很有用
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问