要实现一个像126邮箱那样添加附件的功能,现在jquery.MultiFile插件能够提供这样的页面效果,我结合Struts2实现,却碰到问题,请大家帮忙看一下JSP页面:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib uri="/FCKeditor" prefix="FCK"%>
<%@ include file="taglibs.jsp"%><HTML>
<HEAD>
<TITLE>New Document</TITLE>
<link rel="stylesheet" type="text/css" href="${ctx}/css.css">
<script language="JavaScript" src="${ctx}/jquery-1.2.3.pack.js"></script>
<script language="JavaScript" src="${ctx}/jquery.MultiFile.js"></script>
<script type="text/javascript" language="javascript">$(document).ready(function() {
$("#seefile").click(function() {
alert($("#mailForm").html());
});


$('#upload').MultiFile({
max:3, STRING: {
remove:'删除',
selected:'Selecionado: $file',
denied:'Invalido arquivo de tipo $ext!'
}
});
}); </script>
</HEAD>
<BODY onLoad="init()">
<form name="mailForm" enctype="multipart/form-data" id="mailForm"
action="${ctx}/webMail/mailAction!sendMail.action" method="post">
<table>
<tr>
<td>
附件:
</td>
<td>
<input type="file" id="upload" name="upload" />
</td>
</tr>
<tr>
<td>
<input type="button" value="查看" name="seefile" id="seefile" />
</td>
<td>
<input type="submit" value="发送"/>
</td>
</tr>
</table>
</form>
</BODY>
</HTML>Action:public class SendMailAction extends ActionSupport {
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;

public String sendMail() {
if (upload != null)
System.out.println("上传文件数=" + upload.size());

for(String fileName : uploadFileName){
System.out.println(fileName);
}
return ERROR;
}
}
现在什么都没有做,只想看一下文件上传过来没有控制台结果:
上传文件数=1
st01.gif问题是: 只能取到第一个文件,不能取到其它文件.不知道是怎么回事...

解决方案 »

  1.   

    private File[] upload; 
    private String[] uploadContentType; 
    private String[] uploadFileName;
    这3个属性,我不知道数组能否成功,但是我是用的List来上传多个的,并且成功了
      

  2.   

    好像在说笑话吧,enctype="multipart/form-data" 有这个你们不报错吗?
      

  3.   

    修改jquery.MultiFile.js
    e.name = (e.name || x.attr('name') || 'file') + (e.i>0?e.i:'');改为
    e.name = (e.name || x.attr('name') || 'file')