我想上傳一個表單中的多個文件,這個文件的數量因用戶而異,例如,用戶可以上傳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