ブログを書く順番が回ってきました。okita です。
今回も GeneXus Tips です。
GeneXus でファイルを作成したい!テキストとかCSVとかとか・・・
っていう時にファイルをどこに作成すればいいのか・・・
という時に GeneXus が自動で作成してくれる 「PublicTempStorage」
のパスを取得する方法をご紹介!
絶対パスとかで「ココに作成してください!」って時は必要ない技術です(; ・`д・´)
というわけで以下がソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// (1)Blob を作成 &Blob.FromBase64String("MA==") // (2)Blob のパスを取得 &File.Source = &Blob.ToString() // (3)ファイルの存在を確認 If &File.Exists() // ファイルが存在する場合 // (4)ファイルのパスを取得 &Out_Path = &File.GetPath() // (5)ファイルを削除 &File.Delete() Else // ファイルが存在しない場合 &Out_Path = "" Endif // 返却 Return |
——————————————————
変数説明
&Blob Blob型
&File File型
&Out_Path VarChar(パスが入るくらいの文字数)
——————————————————
(1)Blob を作成
「PublicTempStorage」に一時的にファイルを作成します。
「PublicTempStorage」が存在しない場合は GeneXus が自動で作成してくれます。
(2)Blob のパスを取得
一時ファイルのパスを取得してます。
(3)ファイルの存在を確認
存在確認です。
(4)ファイルのパスを取得
ファイルのパスを取得。パスなのでファイル名は含まれません。
(5)ファイルを削除
使わないので一時ファイルを削除ド━(゚Д゚)━ン!!
これで問題なく実行できれば
&Out_Path 変数に「PublicTempStorage」のパスが取得できているはずです!
どうしても環境によってファイルのパスって変わってきちゃうので
毎回設定ファイルを変えるとか
テーブルにパスを設定する項目を作成して、そこを環境ごとに書き換えてとか・・・・メンドイ(´・ω・`)
システムの要件しだいなので要件にあった方法を見つければベストだと思います。
今回はその中の方法の1つということで・・・以上!
※&Blobから ToString() を使って取得したパスを
使ってもいいのですが一時ファイルの削除を行いたい +
&Blob.ToString() だと一時ファイルのファイル名も入ってしまうので
今回は&File に代入するようにしています。
あとセキュリティ的にファイル作成がNGだと使えない方法だと気付きましたw