session存值的问题,大家进来看下啊。

问题描述

下面这段代码就是个上传的功能,现在是这样的,比如我连续上传3个文件a.doc,b.doc,c.doc,然后用 session.setAttribute("filespath",str);把名称存下来,可是每次存的都是c.doc,我看了下,应该是在session里面,每次上传都把前一个的文件名称给覆盖了,所以都保存的是最后一个名称,我想把这3个名称都保存下来。。。。大家看下啊。我在别的页面上去掉用String zlfielpath = (String)session.getAttribute("filespath");public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {HttpSession session = request.getSession();DiskFileItemFactory factory = new DiskFileItemFactory();// 设置内存缓冲区,超过后写入临时文件factory.setSizeThreshold(10240000);// 设置临时文件存储位置 String root = request.getRealPath("")+"\upwordzl"; String saveurl=root+"\";File file = new File(saveurl);if(!file.exists())//file.mkdirs(); 创建文件夹factory.setRepository(file);ServletFileUpload upload = new ServletFileUpload(factory);// 设置单个文件的最大上传值upload.setFileSizeMax(10002400000l);// 设置整个request的最大值upload.setSizeMax(10002400000l);upload.setHeaderEncoding("UTF-8");try {List<?> items = upload.parseRequest(request);FileItem item = null;String fileName = null;String str = "";for (int i = 0 ;i < items.size(); i++){item = (FileItem) items.get(i);fileName = saveurl + File.separator + item.getName();// 保存文件if (!item.isFormField() && item.getName().length() > 0) {item.write(new File(fileName));str =item.getName()+"★";}} session.setAttribute("filespath",str);//保存名称, } catch (FileUploadException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}} 问题补充:梦中有你 写道

解决方案

不可能的,你去打印一下items 跟 pathList 的size 肯定不是1 是1的话 那肯定取出来的是一条记录 你debug一下
解决方案二:
从楼主的情况可以看出来每次执行的时候执行了楼上给的程序,所以造成的结果是每次执行的list都是只有一个结果,分别是 a,b,c,到最后一个的时候仍然list中只有一个结果,这个结果里还是最后的一个。如果是这种情况的话不如每次从session里取出对应的list并添加下一个。或者你的list放在全局变量中(这种方式要仔细考量)。不过楼上的意思已经能表达到了,就是想办法用集合的方式保存。
解决方案三:
你这个问题,我来给你解决 在你往session里放属性的时候,放一个文件路径的Attribute可以,但是多个的话,肯定保存的是最后一个,怎么办呢?放集合呗,问题不就解决了?修改后的代码: try { List<?> items = upload.parseRequest(request); FileItem item = null; String fileName = null; String str = ""; //声明一个List来放所有上传文件的path List pathList = new ArrayList(); for (int i = 0 ;i < items.size(); i++){ item = (FileItem) items.get(i); fileName = saveurl + File.separator + item.getName(); // 保存文件 if (!item.isFormField() && item.getName().length() > 0) { item.write(new File(fileName)); str =item.getName()+"★"; //往里添加item的path pathList.add(str); } } // session.setAttribute("filespath",str);//保存名称,session.setAttribute("filespath",pathList);页面上拿List 之后再去取具体要那个文件的path

时间: 2024-09-17 04:46:31

session存值的问题,大家进来看下啊。的相关文章

C++语言,火车订票系统,进来看下了。

问题描述 C++语言,火车订票系统,进来看下了. 请问不同席位的选择,价格随之进行变动,这个自动的联动的变动是怎么实现的呢? 解决方案 添加CBN_SElCHANGE消息处理,然后更新另一个 解决方案二: 有很多方式吧,个人觉得结构体就可以啊,结构体里面结构绑定很多与席位相关的东西.然后把结构体放到数组中,或者链表中,不同的下标或者节点就代表不同的席位.希望对你有帮助. 解决方案三: 可以定义一个结构体,里面有一个成员变量是记录席位的,比如0是硬座1是软座,然后再顶一个一个变量用来记录价格,之后

contentobserver-请进来看下我这样使用ContentObserver为什么观察不到db的变动?

问题描述 请进来看下我这样使用ContentObserver为什么观察不到db的变动? 我最近才接触到ContentObserver,今天写了个sample试了下,发现无法检测到db的改动,代码如下: Activity onCreate()里注册: // register observer mObserver = new ComplexTableObserver(uiHandler); getContentResolver().registerContentObserver( ComplexCo

求助大神进来看下ios程序运行报错如何解决

问题描述 求助大神进来看下ios程序运行报错如何解决 解决方案 自己研究研究找找百度 解决方案二: [subDict objectForKey: removeObjectForKey:key]; 看不懂,哪有这个方法啊.

大神进来看下,新手第一天上班

问题描述 大神进来看下,新手第一天上班 怎么写动态获取数据库的信息代码 解决方案 使用ajax进行动态获取 解决方案二: $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json", data: {username:$("#username").val(), content:$("#content").val()}, dataType: "j

关于搜索代码的问题,可能会有点难度,想挑的、懂的都进来看下哦

问题描述 绍兴企业信息:http://www.sxgs.gov.cn/sxgswz/FrontArticleAction.do?method=enterqyjbxxss23C认证:http://219.238.178.26:9080/3cweb/union/rjw-searchn.jsp按"生产厂名称"搜索我想把这两个专用搜索,添加到www.duoci.com的自定义搜索中去,但不知道搜索字串...谁能告诉我,这两个搜索的搜索字串是什么吗?一般怎么看搜索引擎的搜索字串的??谢谢哦 解决

玩过免费amazon ec2的进来看下

问题描述 玩过免费amazon ec2的进来看下 以下是账单. Amazon Elastic Compute Cloud Download Usage Report ? $0.86 US East (Northern Virginia) Region Amazon EC2 running Linux/UNIX $0.00 per Linux/RHEL Micro Instance (t1.micro) instance-hour (or partial hour) under monthly f

hibernate查询返回多表对象的问题?知道的进来看下,谢谢

问题描述 现有2个表, privilege,menus 表,我现有如下sqlSELECT m.id, m.menuId,m.parentId,m.menuName,p.privilege FROM privilege p,menus m WHERE m.id=p.menuid,但是这个没法orm,现用hibernate,如果想让返回的也是一个对象(包含m.id, m.menuId,m.parentId,m.menuName,p.privilege这几个字段值),能用get方法取值,除了建一个包含

有做过矿产资源交易网站的朋友吗?关于交易的实时行情这块数据从哪儿取啊,请进来看下

问题描述 最近在做一个关于矿产资源的网站,里面需要用到矿产交易实时行情,国际指数这些数据,不知道可以从哪个网站取得.我说的这二个数据,类似于http://www.tmre.com.cn/(天津矿产资源交易所)这个网站首页的实时行情,国际指数,有知道的朋友告知下,有多少分送多少分,呵呵 解决方案 本帖最后由 zhugefen 于 2011-10-25 21:45:09 编辑解决方案二:有朋友知道吗?非常感谢

为什么我的c#连不上数据?哪位高手来帮下忙,进来看下

问题描述 重装了还是不行,按新建连接,系统就弹出在用于 SQLServermobileEdition 的.NETFramework数据提供程序 中发生错误.请与提供程序供应商联系以解决此问题.这样的错误信息 解决方案 解决方案二:.NETFramework重装下或者加个补丁!解决方案三:什么补丁哦?说清楚点...解决方案四:没有完全删除吧解决方案五:很奇怪,就第可以连一次数据,之后就出现那样的错误提示了.解决方案六:你下载一个"VS80sp1-KB926604-X86-CHS.msp"