VBScriptでHTTPファイルアップロード

Windowsサーバ間でファイル受け渡しするのにSMB以外のいい方法は無いかと最近のところずっと考えていて、なんかBITSとかいうのが使えるかもと思っていろいろ試してみるがbitsadminコマンドを使っても、どうやってもファイルのアップロードが出来ない。何かアプリ作る必要があるのかどうかという所から良く解らん。


BITSが使えねーということで、.NetフレームワークとかのFileUploadコントロール使ったサーバアプリケーション作って?そのページと会話するVBScriptとか作んなきゃいけねーのか?出来んのかそんなことめんどくせーなと思っていたら、サーバ側のIISWebDAVを有効にすればPUTコマンド使ってVBScriptで結構簡単にHTTPファイル送信できることを発見。WebDAV素晴らしい。


IISが6.0である場合、サーバ側のWebサービス拡張設定でWebDAVを許可に設定して、例えばwebdavという名前のフォルダを書き込み可能として仮想フォルダを作ったら、ファイルを送信するクライアント側のVBScriptは以下のような感じ。



set s = CreateObject("ADODB.Stream")
s.open
s.type = 1
s.LoadFromFile("sample.dat")

set xmlhttp = CreateObject("MSXML2.XMLHTTP")
xmlhttp.open "PUT", "http://192.168.0.xxx/webdav/sample.dat", false
xmlhttp.send s

wscript.echo xmlhttp.status
wscript.echo xmlhttp.statusText


難点といえば、xmlhttp の制限らしいのだけどあんまり大容量のファイル転送は出来ないらしいということ。200MByteくらいまではファイル転送できることを確認できたけど、それ以上は「msxml3.dll: この操作を完了するのに十分な記憶域がありません。」とかいうエラーメッセージを出して送れない。


うーん・・やっぱし通信相手のサーバを制限して且つ認証無しでファイル転送したいんであれば、Anonymous FTPサーバが一番便利かなぁ・・


(追記)バッチファイルでFTP転送(参考)