読者です 読者をやめる 読者になる 読者になる

ファイルアップロードについて(その2)

間が空いてしまいましたが、調査結果を記述。


web.xmlには以下の記述をする。
Teeda - JSF meets DI and AOP -
Doltengでプロジェクトを自動生成した場合は、記述されている。


次にファイルアップロードのソースについて
アップロードのサンプルとして以下のように実装


HTML(抜粋)

<form id="Form" enctype="multipart/form-data">
  <input type="file" id="uploadedFile" />
  <input type="submit" id="doUplode" value="アップロード" />
  <br />
  FileSize : <span id="fileSize"></span>
  <br />
  FileName : <span id="fileName"></span>
</form>

ここで、注目なのは

enctype="multipart/form-data"

の部分であり、自動生成されないため追記する。


次に、Pageクラス(抜粋)

public class FileUplodePage {

	public UploadedFile uploadedFile;

	// ファイルサイズ
	public Long fileSize;

	// ファイル名
	public String fileName;

	public Class doUplode() {
		
		if(uploadedFile != null) {
			// アップロードしたファイルサイズを取得
			fileSize = uploadedFile.getSize();
			
			// アップロードしたファイル名を取得
			fileName = uploadedFile.getName();
		}
		
		return null;
	}
}


ログは、以下の通り

2009-08-10 23:47:38,935 [http-8080-1] DEBUG org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT deployを開始します
2009-08-10 23:47:39,049 [http-8080-1] DEBUG org.seasar.framework.container.util.S2ContainerUtil - クラス(jp.co.fileup.web.FileUplodePage[fileUplodePage])のコンポーネント定義を登録します
2009-08-10 23:47:39,109 [http-8080-1] WARN  org.seasar.framework.container.assembler.BindingTypeShouldDef - jp.co.fileup.web.FileUplodePage$$EnhancedByS2AOP$$126df42のプロパティ(uploadedFile)が見つからないので設定をスキップします
2009-08-10 23:47:39,114 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN jp.co.fileup.web.FileUplodePage#doUplode()
2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1249915590239/12, BranchId=]
2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1249915590239/12, BranchId=]
2009-08-10 23:47:39,115 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - END jp.co.fileup.web.FileUplodePage#doUplode() : null
2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN jp.co.fileup.web.FileUplodePage#prerender()
2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1249915590239/13, BranchId=]
2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.extension.jta.TransactionImpl - トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1249915590239/13, BranchId=]
2009-08-10 23:47:39,126 [http-8080-1] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - END jp.co.fileup.web.FileUplodePage#prerender() : null
2009-08-10 23:47:39,198 [http-8080-1] DEBUG org.seasar.framework.container.hotdeploy.HotdeployBehavior - HOT deployを終了しました


これで動きました。
しかし、リファレンスには「enctype="multipart/form-data"」の追記は
書いてなかったような?
また、ログには「プロパティが見つからない」と出てたりでこれで本当に
いいのかどうかの確証がないです、すみません。


それ以前に書かなければいけないということを自分でまだ理解してない
時点で自分もまだまだだな・・・と感じております。


とりあえず、困っている方がいましたら参考にしてください。


以上