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(); でファイルをバイト列のまま取得することもできます。 関連リンク †この記事は 現在のアクセス:17897 |