投稿者

Training Sales Engineer at InterSystems Japan
記事 Mihoko Iijima · 12月 1, 2020 2m read

データベースに格納されているStreamデータをファイルに出力する方法

これは、InterSystems FAQサイトの記事です。

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

Class Test.Class2 Extends %Persistent{Property Images As %Stream.GlobalBinary;///引数には画像ファイルのフルパスを指定ClassMethod input(in As %StringAs %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()