データベースに格納されているStreamデータをファイルに出力するにはどうすればいいですか?

以下の例は Test.Class2 クラスの Images プロパティに画像ファイルが保存できるように定義しています。
input() メソッドを利用して画像ファイルを Images プロパティに登録し、データベースに保存したとします。

Class Test.Class2 Extends %Persistent
{

Property Images As %Stream.GlobalBinary;

///引数には画像ファイルのフルパスを指定
ClassMethod input(in As %String) As %Status
{
 //画像ファイル格納用ストリームのインスタンスを用意
 set filestream=##class(%Stream.FileBinary).%New()
 //画像ファイルをストリームのインスタンスにリンクさせる
 do filestream.LinkToFile(in)
 //Test.Class2クラスのインスタンス生成
 set o=..%New()
 //画像のストリームをTest.Class2のインスタンスにコピー
 do o.Images.CopyFrom(filestream)
 //インスタンスをデータベースに保存
 quit o.%Save()
}
/// 以下Storage定義は省略
}

データベース登録されたストリームデータを画像ファイルに出力するコード例は以下の通りです(ID=1で格納されたデータをオープンしています)。

 set file="/ISC/test.JPG"
 set filestream=##class(%Stream.FileBinary).%New()
 do filestream.LinkToFile(file)
 set obj=##class(Test.Class2).%OpenId(1) //保存済オブジェクトのオープン
 do filestream.CopyFrom(obj.Images)
 set st=filestream.%Save()

 


該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る