ログイン認証されていないサーバー上のファイルやフォルダーにアクセスする
2021/08/17
方法
ログイン認証されていないサーバー上のファイル / フォルダーに対して 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