(22)S2Flex2画像パレット アップロードServletの作成

ファイルアップロードは、AMFではないので別途サーブレットを用意する必要があります。
FxUGにアップロードのサンプル(by nodさん)があったので、それを利用します。
Jakarta-commonsを利用しています。

サーブレットこんな感じ。

  public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    try {
      request.setCharacterEncoding("UTF-8");
      DiskFileItemFactory factory = new DiskFileItemFactory();
      factory.setSizeThreshold(1024 * 1024 * 2);
      factory.setRepository(new File(getServletContext().getRealPath("/WEB-INF/uploadData")));
      // Create a new file upload handler
      ServletFileUpload upload = new ServletFileUpload(factory);
      // Set overall request size constraint
      upload.setSizeMax(-1);

      List list = upload.parseRequest(request);
      Iterator ite = list.iterator();
      while( ite.hasNext()){
        FileItem fileItem = (FileItem)ite.next();
        if (fileItem.getName() != null && !fileItem.getName().equals("")) {
          File file = new File(getServletContext().getRealPath("/bin/images/" + fileItem.getName()));
          File upDir = file.getParentFile();
          if(!upDir.isFile()&&!upDir.isDirectory()){
            upDir.mkdirs();
          }
          //ファイル内容の書き出し。
          fileItem.write(file);

          // DBへの書き込み。
          final S2Container container = SingletonS2ContainerFactory.getContainer().getRoot();
          ImagemanageService service = (ImagemanageService)container.getComponent(ImagemanageService.class);
          Imagemanage dto = new Imagemanage();
          dto.setImagename(fileItem.getName());
          dto.setTitle(fileItem.getName().substring(0,fileItem.getName().lastIndexOf(".")));
          service.insert(dto);
        }
      }
    } catch (Exception e) {
      ・・・
    }
  }
・・・

あとweb.xml作成したサーブレットを登録しておきます。

・・・
  
    uploadServlet
    your.package.UploadServlet
    5
  

  
    uploadServlet
    /upload
  

・・・


Commonsとnodさんのおかげで結構簡単でした。

サーバーサイドの実装は終わりましたので、
次回は、マインドマップでViewStackの整理をやってみます。