2月 9, 2009 - ソフトウェア    コメントは受け付けていません。

週末にJavaではまったところ2カ所

Chen_20090208.jpg最初は単純に思えました。表示ページから、リンクをクリックして、添付資料をダウンロードする。
しかしよく仕様書を読むと、これをFTPで、しかもユーザとパスワードで接続して行う。
「ftp://username:password@server/directory」とかリンクを作ればできるけれど、これでは、パスワードが丸見え。
結局、FTPでテンポラリのファイルをダウンロードして、それをクライアントに返す、サーブレットを作ることに。
FTPはftp4jを使い問題なく、ダウンロードできる。
問題は、クライアント側でセーブするファイル名が日本語だと文字化けすること。
この問題の解決には、2段階のデバッグが必要でした。
まずは、URLEncodeされたファイル名を、サーブレットで正常に、getParameterで持って来れるか?
と、ファイル名をUTF-8で取得できたら、それを、「 response.setHeader( “Content-Disposition”, “attachment; filename=\”" + cnv_filename + “\”" );」で正常に「cnv_filename」を設定できるか?
結論から言うと、前者は、「String filename=new String(request.getParameter(“file_path”).getBytes(“8859_1″),”UTF-8″);」、後者は、「 String cnv_filename = new String(org_filename.getBytes(“SJIS”),”8859_1″);
」で解決しました。

Comments are closed.