以下が条件です。
・サーバはWin2000Server。IISでhttps(認証有り。)にてWebフォルダを共有。
・クライアントはWin2000 or XP。Accessも2000以上。
・ファイル・フォルダのコピー(送受信)・削除をしたい。
・実際はInternetで行います。ファイルの送受信の失敗成功を可能な限り拾いたい。(WebDavはhttpと違ってその辺は大丈夫なんでしょうか?)
認証つきのサイトにAccessVBAでアクセスさえ完了できれば通常のローカルファイル操作の感覚で出来るのでは?と思っているのですが・・・。
XMLHTTPでUploadするにはエンコード処理とかが必要になってきます。
OLE DBにWebDav用のプロバイダがあるようなので、こっちのほうが簡単かもしれません。
http://q.hatena.ne.jp/1108018134
>通常のローカルファイル操作の感覚で出来るのでは?
XPならWebDAVをドライブに接続したりできるので何でもできそうですが、2000ではわかりません。
http://www.ki.rim.or.jp/~kuro/WebDAV/index.html
WebDAVを使ったスクリプトは、このサイトに実践的な説明があります。
「Microsoft DOMとの戦い」の2コンテンツに、XMLHttpRequestオブジェクトを使用したサンプルがあります。
VBScriptですが、VBAでも同じ感覚でできると思います。
SSLは、昔試した時に出来たのですがやり方を忘れてしまいました。
おそらく、httpをhttpsに変えるだけでいいはずです。
その時はInternetでも問題なくファイルの送受信ができました。
基本的な流れは以下のようになります。
’XMLHttpRequestオブジェクトを作成
Dim objRequest
set objRequest= WScript.CreateObject("Microsoft.XMLHTTP")
’WebDAV要求コマンドをセット(最後の引数は、同期・非同期のフラグ)
objRequest.open "GET", "http://localhost/index.htm", False
’必要なヘッダがあればセット
objRequest.setRequestHeader "hoge", "fuga"
’要求を送信
objRequest.send
’レスポンスを取得して処理
Msgbox objRequest.responseText
ファイルの送信なら、PUT要求を使えばいいはずです。
送受信の結果はobjRequest.Statusあたりで取れるのではないでしょうか。
ありがとうございます。
教えていただいたページのとおりこのようなスクリプトは出来ました。
ただこの場合サーバ上のフォルダからサーバ上のフォルダですよね?
GETでローカルフォルダにサーバ上のファイルをダウンロードする or PUTでローカルファイルをサーバにアップするやり方はどうすればよいのでしょう?
ローカルフォルダの指定って出来ないのでしょうか?
putで試してみたら403エラーになってしまいます。copyは出来るし、IEのWebフォルダからだとアップロードはうまくいくんですが・・。
objRequest.Open "PUT", "https://server/webDav/", False, "user", "password"
objRequest.Send "C:\Test.txt"
XMLHTTPでUploadするにはエンコード処理とかが必要になってきます。
OLE DBにWebDav用のプロバイダがあるようなので、こっちのほうが簡単かもしれません。
http://q.hatena.ne.jp/1108018134
>通常のローカルファイル操作の感覚で出来るのでは?
XPならWebDAVをドライブに接続したりできるので何でもできそうですが、2000ではわかりません。
時間が無いのでとりあえず返信だけ。
ありがとうございます。
教えていただいた方法でファイルのアップロードが出来ました。
ちゃんとIISのログにも「Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1」と出ています。
ただフォルダの移動がOLE DBだと出来ないっぽいですね。
その場合は上のXMLHttpRequestでやるしかないのかな・・。
ファイルの移動や削除はXMLHttpRequestでも出来るのにフォルダだと403になってしまうんですよね。
ただこれ以上はちょっと質問の内容が違ってきてしまいそうなので明日にでも新しい質問を起こそうと思います。ありがとうございました。
時間が無いのでとりあえず返信だけ。
ありがとうございます。
教えていただいた方法でファイルのアップロードが出来ました。
ちゃんとIISのログにも「Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1」と出ています。
ただフォルダの移動がOLE DBだと出来ないっぽいですね。
その場合は上のXMLHttpRequestでやるしかないのかな・・。
ファイルの移動や削除はXMLHttpRequestでも出来るのにフォルダだと403になってしまうんですよね。
ただこれ以上はちょっと質問の内容が違ってきてしまいそうなので明日にでも新しい質問を起こそうと思います。ありがとうございました。