|
Commons FileUpload? パッケージは、サーブレットなどWEB環境にファイルアップロード機能を実装したいときに使用します。 ダウンロード †http://ftp.kddilabs.jp/infosystems/apache/jakarta/commons/fileupload/binaries/ よりダウンロードできます。2007/02/24現在の最新版はcommons-fileupload-1.2-bin.tar.gzです。また、Dependenciesを見るとcommons-ioが必要みたいですね。 やってみる † 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?を取得できます*1。あとはこのFileItem?を使って File uploadedFile = new File("c:/", item.getName());
try {
item.write(uploadedFile);
} catch (Exception e) {
e.printStackTrace();
}
とすることでファイルを書き出すことができます。 ファイルをバイト列のまま取得する †byte[] data = item.get(); でファイルをバイト列のまま取得することもできます。 関連リンク †この記事は 現在のアクセス:18612 |