ASP.NET上传文件,已经上传的大小保存在session中,在另一个页面中读取session的值不行
想自己做个ASP.NET上传文件时显示进度条的, 按照自己的想法,其实也就是显示每次已经上传的字节,从网上找到一个方法是能够把文件变成流以后再慢慢写入的,我在那个循环写入的时候每循环一次都把已经上传的字节保存在session中,然后在另一个页面我读取该session值,即是已上传的字节,我放在网上测试,上传大点的文件,在浏览器刷新的时候我再打开另一个页面,该页面只是读取session的值,但是我发现如果文件没有上传完的时候另一个读取session的值的页面也同时打不开,难道在写session的时候不能读取session吗?
请教大家,是怎么回事?下面附上代码:
HTML页面,只显示HTML的上传组件:
<form id="form1" name="uploadForm" method="post" enctype="multipart/form-data" action="upload.ashx">
    <input type="file" id="imgFile" name="imgFile" style="width: 220px;" />
    <input type="submit" value="上传"/>    
    </form>
upload.ashx上传一般处理程序,负责上传文件,通过流的方式
<%@ WebHandler Language="C#" class="upload" %>
using System;
using System.Web;
public class upload : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        HttpPostedFile imgFile = HttpContext.Current.Request.Files["imgFile"];
        string savePath = context.Server.MapPath("~/uploadfile/niunan/"+imgFile.FileName);
long totalBytes = imgFile.ContentLength;
        System.IO.Stream st = imgFile.InputStream;
        System.IO.Stream so = new System.IO.FileStream(savePath, System.IO.FileMode.Create);
        long totalDownloadedByte = 0;  // 已经上传的大小
        byte[] by = new byte[1024];
        int osize = st.Read(by, 0, (int)by.Length);
        while (osize > 0)
        {
            totalDownloadedByte = osize + totalDownloadedByte;
            context.Session["len"] = totalDownloadedByte;  // 存session,表示已经上传了的字节
            so.Write(by, 0, osize);
            osize = st.Read(by, 0, (int)by.Length);
        }
        so.Close();
        st.Close();
        
        context.Response.Write("<br>保存成功!文件名:"+imgFile.FileName+", 总大小: "+totalBytes);
    }
public bool IsReusable {
        get {
            return false;
        }
    }
}
test.aspx页面,只获取session中的值:
    <form id="form1" runat="server">
    <%
        string str = Session["len"] == null ? "没有值" : Session["len"].ToString();
        Response.Write(str);
    %>
    </form>
我在上传一些大文件的时候,趁还没有上传完毕,就在浏览器另开一个窗口运行test.aspx,想直接读取session中的值,即已经上传的字节,但是发现test.aspx打不开,必须得等到文件上传完毕后才能打开的,读取到的时也只是整个文件的大小...
ASP.NET上传文件,已经上传的大小保存在session中,在另一个页面中读取session的值不行的更多相关文章
- vue-resource+iview上传文件取消上传
		
vue-resource+iview上传文件取消上传 子组件: <template> <div class="upload-area-div"> <U ...
 - Asp.net MVC 处理文件的上传下载
		
如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个, ...
 - 利用Asp.net MVC处理文件的上传下载
		
如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUpload就是其中一个, ...
 - asp.net web开发——文件的上传和下载
		
HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...
 - 利用uploadify+asp.net 实现大文件批量上传。
		
前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...
 - asp.net core 下载文件,上传excel文件
		
下载文件: 代码: 后端代码: public IActionResult DownloadFile() { var FilePath = @"./files/deparment.xlsx&q ...
 - asp.net (web)选择文件夹 上传文件
		
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
 - Uploadify 3.2上传文件,限制类型,大小,传递参数等
		
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="upload.aspx.cs ...
 - php  上传文件实例  上传并下载word文件
		
上传界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
 
随机推荐
- 九度OJ 1357:疯狂地Jobdu序列 (数字特性)
			
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:715 解决:263 题目描述: 阳仔作为OJ的数据管理员,每一周的题目录入都让其很抓狂,因为题目不是他出的,他控制不了出题的速度--在等题目 ...
 - Truthy Falsy
			
https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值. JavaS ...
 - bash常见命令
			
pwd (Print Working Directory) 查看当前目录 cd (Change Directory) 切换目录,如 cd /etc ls (List) 查看当前目录下内容,如 ls - ...
 - Python 是怎么火起来的?
			
Python 之父 Guido 正在设计 Python 语言,结果家里突然潜入一条大蟒蛇,一番激烈斗争,大蟒蛇把 Guido 叔生吞进肚,并洋洋自得:So Who is Guido Van Rossu ...
 - 怎样使用Chrome模拟手机浏览器測试移动端网站
			
作者:zhanhailiang 日期:2014-10-10 环境说明: Chrome 37.0.2062.124 m 1. 通过[菜单→工具→开发人员工具|Javascript控制台]或[快捷键Ctr ...
 - hbase中清空整张表的数据
			
hbase(main):005:0> truncate 'fr:test' Truncating 'FaceBase' table (it may take a while): - Disabl ...
 - Android基础入门教程
			
http://www.kancloud.cn/wizardforcel/w3school-android/100491
 - BADI:LE_SHP_DELIVERY_PROC-增强在交货处理中
			
1.所得方法清单: CHANGE_FCODE_ATTRIBUTES Control Activation of Function CodesCHANGE_FIELD_ATTRIBUTES Contro ...
 - nginx基础系列
			
centos中搭建nginx环境 nginx开机启动 nginx配置文件说明 nginx负载均衡配置 nginx upstream模块 nginx配置ssl nginx日志切割 nginx平滑升级
 - Loadrunder常见问题汇总(持续更新)
			
1.LR 脚本为空的解决方法: 1)如果安装了IE以外的浏览器,并且IE不是默认浏览器,则无法生成录制脚本 2)如果录制脚本时IE不能打开,则需要将浏览器的IE工具高级选项中,将“启用第三方浏览器扩展 ...