サーブレットでの画像処理時のパスの指定
クライアントからファイル名をサーブレットに渡し、
そのファイルをImageIOでクライアントに返して表示させるプログラムを組んでいます。
そこで、クライアントからパラメータで受け取った文字列(画像ファイル名)を変数に入れ、
サーブレット側で指定してある文字列(ファイル格納ディレクトリへのパス)の最後にその変数を連結させたものから
Fileオブジェクトを作り、ImageIOのreadメソッドの引数として指定したところ
IIOExceptionの例外が発生します。(Can't read input file!)
サーブレット側でファイルへのパスを直接指定したものでFileオブジェクトを作って実行するとうまくいきます。
原因は何なのでしょうか?
String filename = request.getParameter(クライアントから受け取ったファイル名);
ServletContext sc = getServletContext();
String filepath = sc.getRealPath("/img/"+filename);
response.setContentType("image/jpg");
File file = new File(filepath);
BufferedImage readImage = ImageIO.read(file); ←ここで例外が発生します
ImageIO.write(readImage, "jpg", response.getOutputStream());
開発環境はEclipce,Tomcatです。
お礼
お返事ありがとうございます。 Warファイル(実際はZip形式だったと思うのですが) に対してアクセスを行いたかったのですが、無理そうだったので 動的なPDF生成は別のディレクトリに置くことで解決いたしました。