- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Commons FileUpload パッケージは、サーブレットなどWEB環境にファイルアップロード機能を実装したいときに使用します。
**ダウンロード [#l1bd0b11]
http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/fileupload/binaries/ よりダウンロードできます。2007/02/24現在の最新版は[[commons-fileupload-1.2-bin.tar.gz>http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/fileupload/binaries/commons-fileupload-1.2-bin.tar.gz]]です。また、[[Dependencies>http://jakarta.apache.org/commons/fileupload/dependencies.html]]を見ると[[commons-io>http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/io/]]が必要みたいですね。
**やってみる [#j0ec62e6]
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// Create a factory for disk-based file items
DiskFileItemFactory factory = new DiskFileItemFactory();
// Set factory constraints
factory.setSizeThreshold(4096);
// factory.setRepository(new File("/tmp"));
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Set overall request size constraint
upload.setSizeMax(-1);
// Parse the request
try {
List<FileItem> items = upload.parseRequest(request); <-パラメタのList
for (FileItem item : items) {
System.out.println("item: " + item);
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
private void processFormField(FileItem item) {
String name = item.getFieldName();
String value = item.getString();
System.out.println(name + " : " + value);
}
private void processUploadedFile(FileItem item) {
File uploadedFile = new File("c:/", item.getName());
try {
item.write(uploadedFile); //ファイル書き込み
} catch (Exception e) {
e.printStackTrace();
}
}
このように、
List<FileItem> items = upload.parseRequest(request);
このメソッドを呼ぶことで、parameterとそのvalueの対のFileItemを取得できます((item.isFormField()だったら普通のパラメタ。そうでなかったらアップロードファイル))。あとはこのFileItemを使って
File uploadedFile = new File("c:/", item.getName());
try {
item.write(uploadedFile);
} catch (Exception e) {
e.printStackTrace();
}
とすることでファイルを書き出すことができます。
**ファイルをバイト列のまま取得する [#z608f13a]
byte[] data = item.get();
でファイルをバイト列のまま取得することもできます。
**関連リンク [#d082e1de]
-[[Commons FileUpload>http://jakarta.apache.org/commons/fileupload/]]
----
この記事は
#vote(おもしろかった[3],そうでもない[3])
#vote(おもしろかった[4],そうでもない[3])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}