- - PR -
Turbineフレームワーク上でのアップロードファイル名の取得
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-07-02 13:58
頻繁に質問のしまして申し訳ございません。
今回は Turbine(2.2) +velocity(1.3) +commons-fileupload(1.0) +Turbineuploadservice 環境 TurboLinux 8.0 デフォルト文字コード EUC-JP クライアント HTMLページ(Velocityで記述) Multipart/form-data EUC-JP におけるアップロード時のファイル名の取得について質問があります。 velocityにおいてページが作成される際に呼ばれる dobuildTemplete()メソッド内でブラウザからのアップロードを実装しようとしています。 アップロード自体は成功しているのですが 全角ファイル名のみ文字化けの現象が発生しています。 どうすればこの現象を回避できるでしょうか? お知恵がありましたら、お貸し頂ければうれしい限りです。 //以下ソースです(一部抜粋) public void doBuildTemplate(RunData data, Context context) throws Exception { User user = data.getUser(); String uid = user.getUserName(); String saveDir = DIR + uid + "/"; //保存ディレクトリ //Httpサーブレット HttpServletRequest req; req = data.getRequest(); req.setCharacterEncoding("EUC-JP"); //ディレクトリチェック File objFile = new File(saveDir); if (objFile.exists() == false) { //ディレクトリ作成 objFile.mkdirs(); } DiskFileUpload fu = new DiskFileUpload(); fu.setHeaderEncoding("EUC-JP"); //バッファ fu.setSizeMax(100000000); //テンポラリファイル fu.setRepositoryPath("java.io.tmpdir"); ParameterParser params = data.getParameters(); FileItem fi = params.getFileItem("fileName"); System.out.println("path--------------------------" + params.getFileItem("fileName")); //ここでfile name は?????に //リクエスト形式が正しいかどうか if (!DiskFileUpload.isMultipartContent(req)) { throw new ServletException("Not Suppoted Request: " +req.getContentType()); } //ファイル名が指定されていない または サイズが0[byt]はアップロード対象外 if (fi != null || fi.getSize() > 0) { File folder = new File(Turbine.getRealPath(saveDir)); //セーブディレクトリ //ファイル名称 String fileName = new File(fi.getName()).getName(); //アップロード対象ファイル名 fileName = new String (fileName.getBytes("8859_1"), "EUC-JP"); File targetFile = new File(folder, fileName); int ind = targetFile.getPath().lastIndexOf('\\\\'); String FLPATH = targetFile.getPath().substring(ind + 1,targetFile.getPath().length()); WriteItem = saveDir + FLPATH; File exist_file = new File(WriteItem); //ファイル存在チェック if (exist_file.exists() == true) { exist_file.delete(); } //ファイルアップロードアイテム書き込み fi.write(saveDir + FLPATH); //ここのカキコミは後に修正w } |
1
