Jsp Struts2文件上传

Jsp Struts2文件上传,jsp,file-upload,struts2,Jsp,File Upload,Struts2,我想以一种形式上传多个文件,文件数量因用户而异,例如,一个用户可以上传2个文件,另一个用户可以上传12个文件。我想知道如何在jsp struts2表单中创建一个循环或其他东西,这样当用户上载一个文件时,它会将其名称添加到列表中,他/她可以上载另一个文件并添加到列表中,依此类推 您可以使用内置Struts2多文件上传功能 <s:form action="doMultipleUploadUsingList" method="POST" enctype="multipart/form-data"

我想以一种形式上传多个文件,文件数量因用户而异,例如,一个用户可以上传2个文件,另一个用户可以上传12个文件。我想知道如何在jsp struts2表单中创建一个循环或其他东西,这样当用户上载一个文件时,它会将其名称添加到列表中,他/她可以上载另一个文件并添加到列表中,依此类推

您可以使用内置Struts2多文件上传功能

<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>
有关详细信息,请参阅Struts2的多文件上传页面


向用户显示在JSP页面上添加更多文件的选项是如何显示的问题。向用户显示文件上载框名称时,您需要注意的是,文件上载框名称应相同,以便
Struts2 param interceptor
可以将它们设置为动作类中的列表,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>

com.jgeppert.struts2.jquery
struts2 jquery
3.2.0
聚甲醛
com.googlecode.struts2scopeplugin
struts2范围插件
1.0.4
我们创建一个类来准备表单,如下所示:

 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;
    }

}
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;
    }




    }
公共类PrepareUpload扩展了ActionSupport{
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
private List fileUploadi=new ArrayList();
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
私有列表fileUploadContentTypei=newArrayList();
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
私有列表fileUploadFileNamei=newarraylist();
@操作(value=“/prepareupload”,结果={
@结果(location=“upload.jsp”,name=“success”)
})
@结束
公共字符串execute()引发异常
{
回归成功;
}
公共列表getFileUploadi(){
返回文件上传;
}
public void setFileUploadi(列表fileUploadi){
this.fileUploadi=fileUploadi;
}
公共列表getFileUploadContentTypei(){
返回fileUploadContentTypei;
}
public void setFileUploadContentTypei(列表fileUploadContentTypei){
this.fileUploadContentTypei=fileUploadContentTypei;
}
公共列表getFileUploadFileNamei(){
返回fileUploadFileNamei;
}
public void setFileUploadFileNamei(列表fileUploadFileNamei){
this.fileUploadFileNamei=fileUploadFileNamei;
}
}
以及一个用于添加到列表和处理ajax调用的类,如下所示:

 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;
    }

}
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;
    }




    }
public类UploadAction扩展了ActionSupport{
私有静态最终长serialVersionUID=7968544374444173511L;
私有静态最终日志Log=LogFactory.getLog(UploadAction.class);
私有串回波;
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
private List fileUploadi=new ArrayList();
private List fileUpload=new ArrayList();
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
私有列表fileUploadContentTypei=newArrayList();
私有列表fileUploadContentType=new ArrayList();
@In(scope=ScopeType.CONVERSATION)
@Out(scope=ScopeType.CONVERSATION)
私有列表fileUploadFileNamei=newarraylist();
private List fileUploadFileName=new ArrayList();
@操作(value=“/uploada”),结果={
@结果(location=“simpleecho.jsp”,name=“success”)
})
@开始
公共字符串execute()引发异常
{
fileUploadi.addAll(fileUpload);
fileUploadFileNamei.addAll(fileUploadFileName);
fileUploadContentTypei.addAll(fileUploadContentType);
对于(int i=0;i”+fileUploadFileNamei.get(i);
日志信息(echo);
}
回归成功;
}
公共字符串getEcho()
{
回波;
}
公共列表getFileUpload(){
返回文件上传;
}
public void setFileUpload(列表fileUpload){
this.fileUpload=fileUpload;
}
公共列表getFileUploadContentType(){
返回fileUploadContentType;
}
public void setFileUploadContentType(列表fileUploadContentType){
this.fileUploadContentType=fileUploadContentType;
}
公共列表getFileUploadFileName(){
返回fileUploadFileName;
}
public void setFileUploadFileName(列出fileUploadFileName){
this.fileUploadFileName=fileUploadFileName;
}
公共列表getFileUploadi(){
返回文件上传;
}
public void setFileUploadi(列表fileUploadi){
this.fileUploadi=fileUploadi;
}
公共列表getFileUploadContentTypei(){
返回fileUploadContentTypei;
}
public void setFileUploadContentTypei(列表fileUploadContentTypei){
this.fileUploadContentTypei=fileUploadContentTypei;
}
公共列表getFileUploadFileNamei(){
返回fileUploadFileNamei;
}
public void setFileUploadFileNamei(列表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>

文件上载:
在下面添加文件:

我知道如何使用操作和此多文件表单。我不知道的是如何将上传的文件数量增加到100例如,我能做一个循环吗?例如,当他上传一个文件时,它会添加它,并要求他上传另一个文件,当用户提交表单时,我可以用一个文件数组来处理它。这只是一个UI iP配置,与我相信你的操作无关看起来像gmail提供的东西,所以它提供的只是支持i帧的功能,可以找到deta