1

ユーザーがファイルをアップロードしてもしなくてもよい複数のファイルをアップロードしたいというシナリオがあり、ユーザーがファイルをアップロードした位置にインデックスを維持し、そのインデックスを名前としてファイルを保存したいというシナリオがあります

https://stackoverflow.com/a/17050230/3425489を参照 しましたが、私の場合、新しいクラスを作成したくないので、参照されていません 承認されたソリューション

今まで私のアクションクラスで私は持っています

File upload [];
String uploadContentType []
String uploadFileName []

ゲッターとセッター

私のjspで試しました

<input type="file" name="upload">

しかし、アップロードされたファイルのみを取得でき、インデックスを維持できません

も試した

<input type="file" name="upload[0]">
<input type="file" name="upload[1]">
<input type="file" name="upload[2]">

この場合、Action クラスでプロパティを設定できません

- - 更新しました - -

私のModel Struts 2を参照できます:JSPでモデルプロパティにアクセスできません

あなたのすべての ProcessSolutionStep について、特定のステップでどのファイルがアップロードされているかを維持したいと思います。

つまり、ユーザーは、ステップ 1ステップ 5のファイルをアップロードし、中間のステップをスキップして表示することができます。

特定のステップでアップロードされたファイルを表示したい

4

2 に答える 2

1

新しいクラスを作成する必要はありません (すべてのオブジェクトを個別にカプセル化する場合は、これが 1 つの方法です)。単にLists:を使用します。

public class Upload extends ActionSupport{

    private List<File> files;
    private List<String> filesContentType;
    private List<String> filesFileName;

    /* GETTERS AND SETTERS */           

    public String execute() throws Exception{
        System.out.print("\n\n---------------------------------------");
        int i=0;
        for (File file : files){
            System.out.print("\nFile ["+i+"] ");
            System.out.print("; name:"         + filesFileName.get(i));
            System.out.print("; contentType: " + filesContentType.get(i));
            System.out.print("; length: "      + file.length());
            i++;
        }
        System.out.println("\n---------------------------------------\n");
        return SUCCESS;
    }

}

属性を使用しmultiple、権利を忘れないでくださいenctype:

<s:form action="upload" enctype="multipart/form-data" >
    <s:file name="files" multiple="multiple" />
    <s:submit value="Upload files" />
</s:form>
于 2016-11-14T15:33:19.083 に答える