我想上传一个表单中的多个文件,这个文件的数量因用户而异,例如,用户可以上传2个文件,另一个用户可以上传12个文件。我想知道如何在jsp struts2表单中创建一个循环或其他东西,这样当用户上传文件时,它会将其名称添加到列表中,并且他/她可以上传另一个文件并将其添加到列表中,等等。Struts2文件上传
2
A
回答
1
我实现了这个利用两个struts2的插件,它是,Struts2的jQuery插件和Struts2的范围插件
答案如下所示:
包括那些依赖于你的Maven POM文件:
<dependency>
<groupId>com.jgeppert.struts2.jquery</groupId>
<artifactId>struts2-jquery</artifactId>
<version>3.2.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.googlecode.struts2scopeplugin</groupId>
<artifactId>struts2-scope-plugin</artifactId>
<version>1.0.4</version>
</dependency>
,我们创建一个类如下准备形式:
public class PrepareUpload extends ActionSupport{
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<File> fileUploadi = new ArrayList<File>();
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<String> fileUploadContentTypei = new ArrayList<String>();
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<String> fileUploadFileNamei = new ArrayList<String>();
@Action(value = "/prepareupload", results = {
@Result(location = "upload.jsp", name = "success")
})
@End
public String execute() throws Exception
{
return SUCCESS;
}
public List<File> getFileUploadi() {
return fileUploadi;
}
public void setFileUploadi(List<File> fileUploadi) {
this.fileUploadi = fileUploadi;
}
public List<String> getFileUploadContentTypei() {
return fileUploadContentTypei;
}
public void setFileUploadContentTypei(List<String> fileUploadContentTypei) {
this.fileUploadContentTypei = fileUploadContentTypei;
}
public List<String> getFileUploadFileNamei() {
return fileUploadFileNamei;
}
public void setFileUploadFileNamei(List<String> fileUploadFileNamei) {
this.fileUploadFileNamei = fileUploadFileNamei;
}
}
,并在添加一个类列出并处理Ajax拨打如下:
public class UploadAction extends ActionSupport {
private static final long serialVersionUID = 7968544374444173511L;
private static final Log log = LogFactory.getLog(UploadAction.class);
private String echo;
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<File> fileUploadi = new ArrayList<File>();
private List<File> fileUpload = new ArrayList<File>();
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<String> fileUploadContentTypei = new ArrayList<String>();
private List<String> fileUploadContentType = new ArrayList<String>();
@In (scope=ScopeType.CONVERSATION)
@Out (scope=ScopeType.CONVERSATION)
private List<String> fileUploadFileNamei = new ArrayList<String>();
private List<String> fileUploadFileName = new ArrayList<String>();
@Action(value = "/uploada", results = {
@Result(location = "simpleecho.jsp", name = "success")
})
@Begin
public String execute() throws Exception
{
fileUploadi.addAll(fileUpload);
fileUploadFileNamei.addAll(fileUploadFileName);
fileUploadContentTypei.addAll(fileUploadContentType);
for (int i = 0; i < fileUploadFileNamei.size(); i++)
{
if (echo == null)
echo = fileUploadFileNamei.get(i);
else
echo += "<br>" + fileUploadFileNamei.get(i);
log.info(echo);
}
return SUCCESS;
}
public String getEcho()
{
return echo;
}
public List<File> getFileUpload() {
return fileUpload;
}
public void setFileUpload(List<File> fileUpload) {
this.fileUpload = fileUpload;
}
public List<String> getFileUploadContentType() {
return fileUploadContentType;
}
public void setFileUploadContentType(List<String> fileUploadContentType) {
this.fileUploadContentType = fileUploadContentType;
}
public List<String> getFileUploadFileName() {
return fileUploadFileName;
}
public void setFileUploadFileName(List<String> fileUploadFileName) {
this.fileUploadFileName = fileUploadFileName;
}
public List<File> getFileUploadi() {
return fileUploadi;
}
public void setFileUploadi(List<File> fileUploadi) {
this.fileUploadi = fileUploadi;
}
public List<String> getFileUploadContentTypei() {
return fileUploadContentTypei;
}
public void setFileUploadContentTypei(List<String> fileUploadContentTypei) {
this.fileUploadContentTypei = fileUploadContentTypei;
}
public List<String> getFileUploadFileNamei() {
return fileUploadFileNamei;
}
public void setFileUploadFileNamei(List<String> fileUploadFileNamei) {
this.fileUploadFileNamei = fileUploadFileNamei;
}
}
终于JSP应该是这样的:
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<html>
<head>
<sj:head jqueryui="true" defaultLoadingText="Please wait ..."/>
<s:head />
</head>
<body>
<h1>File Upload:</h1>
<s:form action="uploada"
method="POST" enctype="multipart/form-data" theme="xhtml" >
<s:file label="File:" name="fileUpload" size="40" />
<div id="result" >Add Files Below:</div>
<sj:submit
targets="result"
button="true"
validate="true"
value="Add File"
indicator="indicator"
parentTheme="xhtml"
/>
<sj:submit
button="true"
validate="true"
value="Submit"
indicator="indicator"
parentTheme="xhtml"
/>
</s:form>
</body>
</html>
3
您可以在Struts2多个文件上传使用生成feature.In你的JSP文件,你必须定义类似
<s:form action="doMultipleUploadUsingList" method="POST" enctype="multipart/form-data">
<s:file label="File (1)" name="upload" />
<s:file label="File (2)" name="upload" />
<s:file label="FIle (3)" name="upload" />
<s:submit />
</s:form>
将这些文件发送到你的动作类,你必须收集文件的选项内容列表
public class MultipleFileUploadUsingListAction extends ActionSupport {
private List<File> uploads = new ArrayList<File>();
private List<String> uploadFileNames = new ArrayList<String>();
private List<String> uploadContentTypes = new ArrayList<String>();
// There getter and setter methods
}
这里
[File Name] : File - the actual File
[File Name]ContentType : String - the content type of the file
[File Name]FileName : String - the actual name of the file uploaded (not the HTML name)
对于细节参考Struts2的
的多文件上传页面显示用户可以选择添加JSP页面上的多个文件是如何想显示that.All你需要的时候你给他照顾事文件上传框的名字应该是相同的,这样Struts2 param interceptor
可以在你的Action类将它们作为一个列表
相关问题
- 1. struts2中的文件上传问题
- 2. Struts2的文件上传不工作
- 3. NullPointerException上传文件(struts2 +休眠)
- 4. Struts2文件上传拦截器:上传文件名后没有出现
- 5. 限制Struts2文件上传的最大尺寸没有上传整个文件
- 6. blueimp jquery文件上传空文件上传结果struts2,fileitems为空
- 7. 在struts2文件上传中无法获取文件名
- 8. 在Struts2中读取上传文件的内容
- 9. 在Struts2中使用<s:file>上传文件
- 10. 所需资源在struts2中不可用文件上传
- 11. 如何在struts2中跟踪文件上传?
- 12. struts2无法上传文件。无效的字段值
- 13. 如何通过Ajax Struts2中上传文件
- 14. 上传多个文件与维护索引(在哪个文件被上传的位置)在Struts2
- 15. Rails文件上传:上传文件夹
- 16. Valums文件上传 - 多文件上传
- 17. Struts2存储文件
- 18. 使用blueimp上传文件上传东西blueimp文件上传
- 19. 文件上传
- 20. 文件上传
- 21. 文件上传
- 22. 上传文件
- 23. 文件上传
- 24. 上传文件
- 25. 上传文件
- 26. 上传文件
- 27. 上传文件
- 28. 文件上传
- 29. 上传文件
- 30. 上传文件
我怎样才能改变它上传多个文件一次? http://stackoverflow.com/questions/16393581/need-to-upload-multiple-files-at-once – J888