カスタム検索

2009年2月4日水曜日

Air+Grailsでファイルアップロードの巻

AirにはFileReferenceというアップロード用のクラスが用意されてますので、そいつを使います。


var fileRef:FileReference=new FileReference();
fileRef.addEventListener(Event.SELECT,selectHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
fileRef.browse();

// ファイル選択後アップロード処理を実行
private function selectHandler(event:Event):void {
var file:FileReference = FileReference(event.target);
var uploadURL:URLRequest = new URLRequest();
uploadURL.url = "http://localhost:8080/grails/sample/upload";
file.upload(uploadURL);
}

// これがないとエラー画面が出ました
private function ioErrorHandler(event:IOErrorEvent):void {
}


Grails側に受けのアクションを作ってやります。
普通にMultiPartFormDataが来るので、処理してやるだけです。

class SampleController {
def upload={
def file=request.getFile("Filedata")
file.transferTo(new File("/hoge",params["Filename"]))
}
}

1 件のコメント:

Unknown さんのコメント...

はじめまして。

WEBで検索してきました。
私もAIRとGrails(1.2)を使っているのですが、ファイルアップロードができません。
他にサンプルが無く、途方にくれています。

//AIR部
var _urlRequest:URLRequest = new URLRequest();
_urlRequest.url = _url;
fileRef.upload(_urlRequest, "ticketFile");

//grails部
def file=request.getFile("ticketFile")
file.transferTo(new File("/hoge",params["Filename"]))


groovy.lang.MissingMethodException: No signature of method:org.apache.catalina.core.ApplicationHttpRequest.getFile() is applicable for argument types: (java.lang.String) values: [ticketFile]

唯一、Javaではサーブレットのソースだとうまく行くのですが、grails,strutsからはHTTPrequestからのファイルデータの取得に失敗します。

grailsのHTTPRequestは他ライブラリを使っているのでしょうか?

コメントで場違いで申し訳ありません、どこが悪いのでしょうか?お答えいただければありがたいです。