如果用struts实现动态(不定数量)多文件上传(急急急)?
要求必须完全用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文件中读出信息?急!急!急!急!急!急!急!急!急!急!急!




