// 下階層用テンプレート #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(おもしろかった[1],そうでもない[1]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}