ログイン認証されていないサーバー上のファイルやフォルダーにアクセスする

PowerBuilder Tips

方法

ログイン認証されていないサーバー上のファイル / フォルダーに対して FileCopy 関数や FileMove 関数、CreateDirectory 関数、RemoveDirectory 関数などといったファイル / フォルダー操作関数を呼び出した場合にはアクセスに失敗しエラーとなります。

このようなとき、GetFileOpenName 関数や GetSaveFileOpenName 関数を呼び出してユーザーにファイル / フォルダーを選択させることでサーバーの認証ダイアログを表示させ、認証を通してからサーバー上のファイルやフォルダーにアクセスできるようする方法があります。

以下の例は Pspub サーバー上の Sample.docx をローカルにコピーする処理です。

【例】

string ls_source = "\\Pspub\share\Sample.docx" 
string ls_target = "C:\temp\Sample.docx"
string ls_docname, ls_name
integer li_value, li_copy

li_copy = FileCopy(ls_source, ls_target)

IF li_copy < 0 THEN
    IF MessageBox("エラー", "ファイルのコピーに失敗しました。" &
    + "ファイル、またはフォルダーにアクセスできなかった可能性があります。~n" &
    + "ファイルを選択してください。", Information!, OkCancel!) = 1 THEN

        // FileCopy で失敗 (戻り値: -1) した場合、ファイル選択ダイアログボックスで
        // ユーザーにファイルを選択させることで認証を通す。
        li_value = GetFileOpenName("Select File", ls_docname, ls_name, "DOCX", &
                    + "Text Files (*.TXT),*.TXT,Doc Files (*.DOCX),*.DOCX")

        IF li_value = 1 THEN
            // サーバーの認証を通した後に改めて FileCopy を行う
            li_copy = FileCopy(ls_docname, ls_target)
            IF li_copy < 0 THEN
                MessageBox("Error", "コピーに失敗しました")
            ELSE
                MessageBox("成功", "コピーに成功しました")
            END IF
        END IF
    END IF
ELSE
    MessageBox("成功", "コピーに成功しました")
END IF

 

Tips情報

プロダクト :PowerBuilder

バージョン :2019R3

Tips 一覧を見る
PowerBuilder マイグレーション
PowerBuilder学習、動画で始めちゃう?