(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の整理をやってみます。