Recent Posts

RSS Feeds

Creator2でJSF Fileuploadアプリケーション

さて本日は、Creator2 EAを使用したファイルアップロードWebアプリケーションを
作成します。

まず、今までと同様新規プロジェクトを作成し下記の画面を作成してください。



ここで”アップロード”ボタンを押下します。
すると、"button1_action()"メソッドを実装する画面が表示されますので
下記のコードを記述します。
下記はファイルサイズを取得し1M未満のファイルであれば、
Applicationサーバが動作するマシンの"c:\tmp"ディレクトリにファイルを出力する
コードです。
(ただし、下記はファイルアップデートサンプルを記述するために、
 かなり手抜きに書いています。例:日本語ファイル名のファイルをアップロードした
 場合、下記はサーバ側でファイル名が文字化けします。)

 下記で重要な点は、fileUpload1というインスタンス変数を使用し
 アップロードされたファイルの操作を行うということです。


    public String button1_action() {
        UploadedFile upFile = fileUpload1.getUploadedFile();
        //ファイルサイズの取得(バイト)
        long fileSize = upFile.getSize();
        if(fileSize <= 1048576){ //1M以下ならOK
            //オリジナルファイル名の取得
            String origFileName = upFile.getOriginalName();
            //バイト配列の取得
            byte[] data = upFile.getBytes();
            try{
                //オリジナルファイル名で書き込み
                FileOutputStream fout = new FileOutputStream("c:\\tmp\\" + origFileName);
                fout.write(data);
                fout.flush();
                fout.close();
            }catch(IOException ioe){
                return "error"; //エラーページへ
            }
        }else{
            return "sizeerror"; //エラーページへ
        }
        return null;
    }


上記の他、UploadedFileクラスのインスタンスメソッドには
下記のようなメソッドがあります。例えばコンテントタイプを取得し型に応じた処理を
行う場合にはgetContentType()メソッドを使用します。
また、取得するデータはgetBytes()メソッドの他、InputStreamを利用して
取得することも可能です。


        //コンテントタイプの取得
        String contentType = upFile.getContentType();
        if(contentType.equals("text/plain")){
            String stringData = upFile.getAsString();
            //文字列処理を記述
        }
        try{
            //InputStreamの取得
            InputStream inStream = upFile.getInputStream();
        }catch(IOException ioe){
            return "error"; //エラーページへ
        }


如何でしょう?
ファイルアップロードのWebアプリケーションも非常に簡単に作成できることが
御理解いただけたかと思います。


Permalink     No Comments
Track Back :




Post a Comment:
Comments are closed for this entry.