CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2EE / EJB / JMS

如果用struts实现动态(不定数量)多文件上传(急急急)?

楼主wts(天胜)2006-03-13 11:06:20 在 Java / J2EE / EJB / JMS 提问

要求必须完全用struts实现。  
  单个文件上传,我会。  
  多个文件上传,我会。  
  动态(不定数量)文件上传,我不会。  
  从网上找了半天,都是说单个或者确定数量的文件上传。所以如果是这样的答案,就不用回复了,我也不会给分的,抱歉。  
  不会的,也不用回复,我自己会顶的,抱歉。  
   
  只要能给出正确答案的,无论贴代码也好,贴地址也好,都是欢迎的。 问题点数:100、回复次数:16Top

1 楼lshzfq(new job,new life!)回复于 2006-03-13 13:35:31 得分 0

给个思路:  
                我现在做的实际上是多附件上传,用户上船之后,返回到本页面,在下面显示用户已经上船的附件,而且用户可以删除已经上传的附件,如果用户觉得不够,可以继续上传,而且下面显示的地方,会自动增加上去,最后把用户所有上传的附件返回Top

2 楼lshzfq(new job,new life!)回复于 2006-03-13 13:38:14 得分 10

给个思路:  
                我现在做的实际上是单附件上传,用户选择一个附件上传之后,返回到本页面,页面下显示用户已经上传的附件,而且用户可以删除已经上传的附件,如果用户觉得不够,可以继续上传,而且下面显示的地方,会自动增加上去,最后把用户所有上传的附件返回Top

3 楼zdsdiablo(十分钟年华老去)回复于 2006-03-13 13:42:23 得分 0

看过网易邮箱的那种上传没,如果是有界面的那种,就可以把不定数量变成定数量的,也是一种解决办法吧Top

4 楼li_d_s(鄙视那些不懂Java却跑来乱骂的人,.NET没啥了不起)回复于 2006-03-13 14:11:01 得分 0

邮箱的附件设计是个很好的例子Top

5 楼k3179(螃蟹)回复于 2006-03-13 14:21:50 得分 0

所谓动态,应该就是用户要求的数量.  
  设一个增加附件数量的button,让用户决定个数.Top

6 楼pigengler(en)回复于 2006-03-13 15:37:19 得分 20

左边一个文件选择框,右边一个下拉列表。  
   
  选择好上传的文件可以通过javascript一个一个添加下拉列表中。  
   
  下拉列表中的是一个数组。  
   
  java程序中,根据数组的数量循环上传文件到服务器Top

7 楼wts(天胜)回复于 2006-03-13 18:06:56 得分 0

谢谢各位。我就是要做到象163邮箱附件的那种效果。  
  lshzfq(程序回归----->C++!)   你说的这个做法,我想过了,实现是没问题,但是不是很理想,163邮箱的多个附件是一次上传的。  
  k3179(螃蟹)   :你说的那个,当然是要那样做的,用户想添加附件,就点击按钮,增加一个file  
   
  pigengler(en)   :你提到的,确实是一个思路。但是很少见到附件上传,用那样的形式。  
   
  能不能来点实际的东西,比方说  
  Form怎么定义(数组,List???),  
  Action中怎么获取,  
  页面上标签怎么写?  
  javascript怎么写(这个部分我倒是想到如何实现了)Top

8 楼24024846()回复于 2006-03-15 10:21:51 得分 5

form的定义<form   id="upload"   action="upload.do"   enctype="multipart/form-data"   method="post">  
  javascript你知道怎么写吧。  
  在Action中解析request.getServletInputStream,如果不想自己写,在网上下一个,这个太多了。Top

9 楼kill8108(日月之光)回复于 2006-03-15 11:37:14 得分 15

应该用list吧,list存放着Struts的上传类型(FileUpload吧),页面上你就用FileUpload对象.属性,记住index=true喔,每次脚本的时候加上这个吧,然后在Action取到上传的为一个list,一个取出即可了,这个我想的是一个思路吧,但没试过!  
   
  2.你直接用smartload这个组件也可以的呀,不一定要用struts的呀,也是很简单呢,先做出来再研究吧,  
  祝你好运!Top

10 楼wts(天胜)回复于 2006-03-16 09:56:49 得分 0

24024846:不好意思,跟没说一样。这些我要是不知道,还上来问什么呀  
  就没有来点实际编码的吗?Top

11 楼pigo()回复于 2006-03-20 09:29:25 得分 45

不说废话,楼主觉得下面的代码用得上就给分吧。  
   
   
  String   dirPath   =   getServlet().getServletContext().getRealPath("/")  
                                                    +   "/upload";  
                  Hashtable   fileh   =   actionForm.getMultipartRequestHandler().  
                                                      getFileElements();  
                  for   (Enumeration   e   =   fileh.keys();   e.hasMoreElements();   )   {  
                          String   key   =   (String)   e.nextElement();  
                          try   {  
                                  FormFile   formfile   =   (FormFile)   fileh.get(key);  
                                  String   filename   =   formfile.getFileName().trim();   //文件名  
                                  if   (!"".equals(filename))   {  
      //不同的浏览器传上的文件名可能有区别,IE的是全路径的,Firefox等是只包含文件名  
  //如果要按原文件名进行文件保存。自己在这里做下判断,  
  //在这里保存文件  
                                          InputStream   ins   =   formfile.getInputStream();  
                                          OutputStream   os   =   new   FileOutputStream(dirPath   +  
                                                          File.separatorChar  
                                                          +   filename);  
                                          int   bytesRead   =   0;  
                                          byte[]   buffer   =   new   byte[8192];  
                                          while   ((bytesRead   =   ins.read(buffer,   0,   8192))   !=   -1)   {  
                                                  os.write(buffer,   0,   bytesRead);  
                                          }  
                                          os.close();  
                                          ins.close();  
   
                                  }  
                          }   catch   (Exception   ex)   {  
                                  logger.debug("出错了",   ex);  
                          }  
                  }  
   
  Top

12 楼wts(天胜)回复于 2006-03-20 13:23:19 得分 0

已经自己解决了。真的感觉现在的CSDN已经没有前几年的氛围了。问题总是得自己解决。真怀疑以后还要不要上来发帖。  
  感谢大家的回复。Top

13 楼wts(天胜)回复于 2006-03-20 13:25:59 得分 0

为了以后有这方面困惑的朋友能够顺利解决问题,将关键部分代码帖上来,权当抛砖引玉了。  
  Form部分:  
  public   class   MultiUploadForm   extends   ActionForm   {  
          private   List   myFiles;  
          public   MultiUploadForm(){  
                  myFiles   =   new   ArrayList();  
                  //为了能够在页面初始显示一个file  
                  myFiles.add(new   UploadFile());  
          }  
          public   List   getMyFiles()   {  
                  return   myFiles;  
          }  
   
          public   UploadFile   getUploadFile(int   index){  
                  int   size   =   myFiles.size();  
                  if(index>size-1){  
                          myFiles.add(new   UploadFile());  
                  }  
                  return   (UploadFile)myFiles.get(index);  
          }  
          public   void   setMyFiles(List   myFiles)   {  
                  this.myFiles   =   myFiles;  
          }  
  }Top

14 楼wts(天胜)回复于 2006-03-20 13:27:24 得分 0

Dataset部分:  
  public   class   UploadFile   implements   Serializable   {  
          private   FormFile   file;  
          public   FormFile   getFile()   {  
                  System.out.println("run   in   uploadFile.getFile()");  
                  return   file;  
          }  
          public   void   setFile(FormFile   file)   {  
                  this.file   =   file;  
          }  
  }Top

15 楼notruiyi(什么乱七八糟的)回复于 2006-03-20 16:28:12 得分 5

楼主,请仔细思考一下SERVLET原理Top

16 楼wts(天胜)回复于 2006-03-20 17:12:58 得分 0

不知道CSDN不能连续回复超过3次,所以没有帖完。  
  需要的朋友,到http://blog.csdn.net/wts/看吧。  
  我帖到Blog上了。Top

相关问题

  • 统计压缩文件夹里的文件数量(急急急急急急急急急急急急急急急急急急急急急急急急!)
  • 怎样复制文件夹,急急急急急急急急~!
  • (急急急!!)关于EXE文件!!
  • 如何將XML文件中的文本解析出來?急急急急急急急急急急急急急急....................
  • 关于文件拷贝。急急急急急急急!!!
  • 急急!!CSV文件
  • 有什么软件可以把wma文件进行剪切?急急急急急急急急急急急急急
  • 急急急急急急急急急急急,菜鸟求教,一段选择文件夹的代码总出错,急急急急急急急急
  • 急急急急急急急急急急急,菜鸟求教,文件夹右键原理提问,急急急急急急急急
  • 怎样从一个INI文件中读出信息?急!急!急!急!急!急!急!急!急!急!急!

关键词

  • 文件
  • 用户
  • 文件名
  • 页面
  • 代码
  • struts
  • 邮箱
  • 解决
  • os
  • 选择

得分解答快速导航

  • 帖主:wts
  • lshzfq
  • pigengler
  • 24024846
  • kill8108
  • pigo
  • notruiyi

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo