- PR -

Turbineフレームワーク上でのアップロードファイル名の取得

1
投稿者投稿内容
えれ
会議室デビュー日: 2004/06/18
投稿数: 10
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)