2008年11月1日土曜日

javaでファイルアップロード

まず、以下のJakarta Commonsの以下の2つのライブラリを用いる。
 ①commons-fileupload
 ②commons-io


まず、jspの設定。
以下のフォームを記述する。

<!-- (1)<FORM>タグにmultipart/form-dataを指定 -->
<form method="POST"
enctype="multipart/form-data"
action="アップロードサーブレットのパス">
<!-- (2)ファイルを選択する<input type="file">タグを指定 -->
<input type="file" name="fileName" />
<input type="submit" value="送信" />
</form>

次に、サーブレットの記述。

Collection ItemList = new ArrayList();


InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;


DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);

try {
List fileItemList = sfu.parseRequest(request);

if (fileItemList.get(0).getName() == null
|| fileItemList.get(0).getName().equals("")) {
// ファイルが選択されていない場合はアップロード画面へ遷移
request.setAttribute("message", "ファイルを選択してください。");
request.getRequestDispatcher(
"アップロード画面").forward(
request, response);
return;
}

for (FileItem fileItem : fileItemList) {
if (fileItem == null) {
break;
}

inputStream = fileItem.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
bufferedReader = new BufferedReader(inputStreamReader);

String line = null;
while ((line = bufferedReader.readLine()) != null) {
itemList.add(line);
}

new uploadService().itemUpload(itemList);
}
// アップロード画面へ遷移
aRequest.setAttribute("message", "アップロードに成功しました。");
request.getRequestDispatcher(
"アップロード先").forward(
request, response);
return;
} catch (FileUploadException e) {
//例外処理記述
} catch (SQLException e) {
//例外処理記述
} catch (NamingException e) {
//例外処理記述
}

/*ここまで。*/

0 件のコメント: