ファイルを選択してアップする場合は問題ないのですが、決まったファイルのアップロード(別システムから出力されるデータなど)を行う場合には不便です。
なのでBlazeDSでアップロードしてやりましょう。
GrailsでBlazeDSは過去のエントリを参照に。
BlazeDSではActionScriptの byte[] と Java の byte[] をコンバートして通せるようなので、ファイルをbyteにして投げてやります。
private function blazeDsUpload():void {
// ファイルをバイト配列で読み込む
var file:File=new File("/opt/hoge.jpg");
var fs:FileStream=new FileStream();
var bytes:ByteArray=new ByteArray();
fs.open(file, FileMode.READ);
fs.readBytes(bytes, 0, file.size);
//定義してあるRemoteObjectへパラメーターとして渡す
remoteObject.upload({"Filedata":bytes});
}
Grailsのサービス側で受け取るサンプル
byte[]データをファイルへ収めてやります。
def upload(params) {
def fileBytes=params["Filedata"]
def file=new File("/work/hoge.jpg")
file.withOutputStream { out ->
out.write(fileBytes)
}
}
0 件のコメント:
コメントを投稿