请问 : 在做 动态 多 文件上传时(jsp页面表现为点击一个button新增一行或者说新增一个上传框) 用 如下代码 :String dirPath = getServlet().getServletContext().getRealPath("/")
+ "/upload";
Hashtable fileh = actionForm.getMultipartRequestHandler().
getFileElements(); //这里fileh.size()总是等于1
for (Enumeration e = fileh.keys(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) fileh.get(key);
String filename = formfile.getFileName().trim();
************* 上传的结果只是上传了 最后一个上传框的文件 , 而不是所有的文件(多个) ,
fileh.size() 那里总是等于1, 请问这是 什么原因呢?
+ "/upload";
Hashtable fileh = actionForm.getMultipartRequestHandler().
getFileElements(); //这里fileh.size()总是等于1
for (Enumeration e = fileh.keys(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) fileh.get(key);
String filename = formfile.getFileName().trim();
************* 上传的结果只是上传了 最后一个上传框的文件 , 而不是所有的文件(多个) ,
fileh.size() 那里总是等于1, 请问这是 什么原因呢?
解决方案 »
- 如何把HTML的调查问卷改成JSP格式的?并且还能实现后台业务逻辑
- 各位XDJMS~javax.servlet.ServletException: Servlet execution threw an exception
- 一个算法问题!
- 在做一个邮件收发功能的程序,遇到下面的错误该怎么解决?海洋大虾请进!!!!!!
- 谁会隐藏msn,就是不让他在任务栏里显示?
- 再次提问!!!textarea多行文本框中文换行问题!
- JSP程序跨平台移植一问
- javabeans的问题
- 最最简单问题.....
- 关于tomcat下面显示jpg图片的问题
- jsf里是否已经取消了servlet?
- 谁有JSP应用开发详解(第二版)电子书?
Collection values = elements.values();
int k = 0;
for (java.util.Iterator i = values.iterator(); i.hasNext();)
{
FormFile file = (org.apache.struts.upload.FormFile) i.next();
....
我作的时候是这样取的,没有问题
getFileElements(); 而你的 : Hashtable elements = multipartRequestHandler.getFileElements();
你 这样能 取到 多个 文件 ?有点奇怪 ,我试试看. 谢谢 adverse(King) .
multipartRequestHandler 不能解吸.你是不是没帖完整的代码啊 ? adverse(King) 兄 !
List fileItems = fu.parseRequest(request);
Iterator i = fileItems.iterator();
http://www.strongd.net/blog/show/28
但我的jsp 页面 的数量是不定的。
我用的是 struts 1.1 的 Formfile
"/upload";
Hashtable files = form.getMultipartRequestHandler().
getFileElements();
for(Enumeration e = files.keys(); e.hasMoreElements();) {
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) files.get(key);
String filename = formfile.getFileName().trim();
if (!"".equals(filename)) {
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) {
ex.printStackTrace();
}
}
http://download1.csdn.net/down3/20070601/01104322187.GIF
如果你修改成 <input type=file name=file><input type=file name=file1><input type=file name=file2>那么你的哪个Hashtable fileh = mobleTableForm.getMultipartRequestHandler().getFileElements(); fileh.size();就不会是1了~~~下面是我做的一个小例子
--------------------jsp------------------------
js部分 :::--- <script language="javascript">
var index = 0;
function addTable(){
document.getElementById("num").value = ++index;
$("#file_area").append("<tr align=center>\
<td align='center' >附件<input type='file' name='file"+index+"' ></td\
</td></tr>");}
</script>
form 部分:::
<form action="/NbgovBszn/insertMobleTable.do" name="form1" method="post" enctype="multipart/form-data">enctype="multipart/form-data"这个属性主管重要 附件添加调用js脚本 :::
<A title=添加 href="javascript:addTable()"> 添加附件 </A>文本框部分 ::
<tbody id="file_area"> <tr>
<td>附件<input type="hidden" name="num" id="num"/></td>
</tr>
</tbody>
-------------------action-------------------------- String filename="";
String dirPath = getServlet().getServletContext().getRealPath("/")
+ thingCode[a];
new File(dirPath).mkdirs();
Hashtable fileh = mobleTableForm.getMultipartRequestHandler().getFileElements();
MultipartRequestHandler multipartRequestHandler = mobleTableForm.getMultipartRequestHandler();
// 取得所有上传文件的对象集合
Hashtable elements = multipartRequestHandler.getFileElements();
for (Enumeration e = fileh.keys(); e.hasMoreElements();) {
// System.out.print("----------------"+e.);
String key = (String) e.nextElement();
try {
FormFile formfile = (FormFile) fileh.get(key);
filename = formfile.getFileName().trim(); // 文件名
int size=formfile.getFileSize();
if(size/1024/1024>5){
request.setAttribute("flag","附件大小不能超过5M");
return mapping.findForward("flag");
}
if (!"".equals(filename)){
// 不同的浏览器传上的文件名可能有区别,有的是全路径的
// 在这里保存文件
InputStream ins = formfile.getInputStream();
OutputStream os = new FileOutputStream(dirPath
+ File.separatorChar + filename);
// System.out.println(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();}