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 ...
随机推荐
- influxDB---Data Exploration
the group clause group by 返回的分组结果是根据用户指定的tag ,time interval. 1.group by tags 2.group by time interva ...
- asp.net mvc4连接mysql
环境:vs2013+mysql5.6+mysql connector for .net 6.8.3+MySQL for Visual Studio 1.1.3 参考:http://dev.mysql. ...
- view {display:block}
view {display:block}
- php扩展redis链接失败,返回false
刚开始接触redis,发现一直返回false,其实只要关闭防火墙就可以连接成功了. 关闭selinux操作 方法1:修改grub.conf将参数selinux=1修改为等于selinux=0,这个 ...
- python获取当前目录路径和上级路径
在使用python的时候总会遇到路径切换的使用情况,如想从文件夹test下的test.py调用data文件夹下的data.txt文件: . └── folder ├── data │ └── data ...
- PAT 1073 多选题常见计分法 (20 分)
批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项,则得到 50% 分数:如果考生选择了任何一个错误的选项,则不能得分.本 ...
- Solr schema.xml中修改id的类型为int
使用solr6的版本的时候(solr5不存在这个问题),在修改schema.xml的field时,想使用int做为id的数据类型,修改后重新加载配置的时候报错.原来schema.xml中field i ...
- KVM虚拟化虚拟机支持虚拟化
一.开启的时候需要关闭所有虚拟机: 首先检查 KVM host(宿主机/母机)上的kvm_intel模块是否打开了嵌套虚拟机功能(默认是开启的): 1.modinfo kvm_intel | grep ...
- 07_Warning $HADOOP_HOME is deprecated.去除办法
Warning $HADOOP_HOME is deprecated.去除办法 警告的出现: 解决方案: 第一种: 去除[/etc/profile]文件中[export HADOOP_HOME=/op ...
- mybatis中collection和association的作用以及用法
deptDaoMapper.xml 部门对应员工(1对多的关系) <resultMap type="com.hw.entity.Dept" id="deptinfo ...