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