Wicket

FileUploadField

コンポーネントの作成方法を示す例で、ユーザーがローカルドライブからファイルを選択してサーバーにアップロードできるようにします。

…​.//Java
import org.apache.wicket.markup.html.form.upload.FileUploadField;

    form.setMultiPart(true);
    form.add(fileUpload = new FileUploadField("fileUpload"));
                            //HTML
<input wicket:id="fileUpload" type="file"/>

ファイルをアップロードするには、Wicketフォームコンポーネントで「**  multipart mode ** 」を有効にする必要があります。

===  1. FileUploadの例

ファイルアップロードコンポーネントをレンダリングし、アップロードされたファイルサイズを10k ** に制限する例新しいアップロードされたファイルは、あらかじめ定義された場所に保存されます。

package com.mkyong.user;

import java.io.File;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.util.lang.Bytes;

public class FileUploadPage extends WebPage {

private FileUploadField fileUpload;
private String UPLOAD__FOLDER = "C:\\";

public FileUploadPage(final PageParameters parameters) {

add(new FeedbackPanel("feedback"));

Form<?> form = new Form<Void>("form") {
 @Override
 protected void onSubmit() {

final FileUpload uploadedFile = fileUpload.getFileUpload();
if (uploadedFile != null) {

//write to a new file
 File newFile = new File(UPLOAD__FOLDER
     + uploadedFile.getClientFileName());

if (newFile.exists()) {
    newFile.delete();
}

try {
    newFile.createNewFile();
    uploadedFile.writeTo(newFile);

       info("saved file: " + uploadedFile.getClientFileName());
   } catch (Exception e) {
       throw new IllegalStateException("Error");
   }
}

}

};

//Enable multipart mode (need for uploads file)
 form.setMultiPart(true);

//max upload size, 10k
 form.setMaxSize(Bytes.kilobytes(10));

form.add(fileUpload = new FileUploadField("fileUpload"));

add(form);

    }
}

===  2. HTMLページ

HTML入力タグを使用してコンポーネントをレンダリングします。

<html>
<head>
<style>
.feedbackPanelINFO {
color: green;
}
.feedbackPanelERROR {
color: red;
}
</style>
</head>
<body>
<h1>Wicket file upload example</h1>

<div wicket:id="feedback"></div>
<form wicket:id="form">
    <p>
        <label>Select file :</label>
        <input wicket:id="fileUpload" size="40" type="file"/>
        <input type="submit" value="Upload"/>
    </p>
</form>

</body>
</html>

=== デモ

開始と訪問 -  __http://localhost:8080/WicketExamples/__

ファイルサイズが10kを超えると、表示エラー

image://wp-content/uploads/2011/05/wicket-file-upload-example-error.png[wicketファイルのアップロードエラー、title = "wicket-file-upload-example-error"、width = 584、height = 328]

すべてOK、保存されたファイル名を表示します。

image://wp-content/uploads/2011/05/wicket-file-upload-example-done.png[wicketファイルのアップロード、title = "wicket-file-upload-example-done"、width = 555、height = 314]

ダウンロードする -  link://wp-content/uploads/2011/05/Wicket-FileUpload-Example.zip[Wicket-FileUpload-Example.zip](7KB)

=== 参考文献

.  http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/form/upload/FileUpload.html[Wicket

FileUpload Javadoc]。 http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/form/upload/FileUploadField.html[ウィケット

FileUploadField Javadoc]

リンク://タグ/ファイルアップロード/[ファイルアップロード]リンク://タグ/ウィケット/[ウィケット]