皆様いつもお世話になっております。
隣のPCに共有化した「WORK」というフォルダへ「test.txt」を
転送したいのですが、転送処理のロジックは以下のような書き方で
よいでしょうか?
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
With xmlhttp
.Open "POST", "http://IPアドレス/work/test.txt", False
.setRequestHeader "Content-Type", "multipart/form-data,boundary=AaB03x"
.send (bytepostdata)
strRESP = StrConv(.responseBody, vbUnicode)
End With
(※XXX.XXX.XXX.XXXはIPアドレスです)
上記処理を実行しますと、「リソースが見つかりません」というエラーになります。
これはネットワーク上、アクセスできていないのでしょうか。
自身のPCからコンピュータの検索で当該フォルダへのアクセスは確立されております。
ちなみに開発環境はWinXP(SP2)でVB6.0(SP4)です。
> 隣のPCに共有化した「WORK」というフォルダへ「test.txt」を
> 転送したいのですが、
http で送信しようとしているのは、その WORK フォルダが
『WebDAV』のフォルダとして公開されているからなのでしょうか?
もし、単なる共有フォルダとして公開されているだけならば、
FileCopy "C:\test.txt", "\\" & server & "\WORK\test.txt"
でコピーできますよ。フォルダへの書き込み権限は必要ですけれども。
魔界の仮面弁士 さま
ご返信ありがとうございます。
申し訳ないことに聞かれている質問がわからないです。。。
最終的には、別のエリアにあるサーバーに対して、HTTPでPOSTして、
宛先上にEXCELファイルを作成したいと思っています。
HTTP / POST を使うというだけでは、どのように送信したいのか分かりません。
そのサーバー側の設定は、どのようになっているのでしょうか?
(それとも、サーバーの設置もこれから行うのでしょうか?)
とりあえず、思いつく範囲で回答。
8前提条件が不足しているので、具体的な回答にはなりえませんけれども)
≪仮定1≫RFC1867 の場合
いわゆる、<input type="file"> の HTML タグで送出するようなパターンです。
この場合、サーバー側には「受け取ったファイルデータをサーバー上に
書き込む為のプログラム」となる cgi や asp が存在しているはずですので、
> .Open "POST", "http://IPアドレス/work/test.txt", False
には、その cgi を示す URL を指定するようにしてください。
また、Send する bytepostdata に対しては、ファイル(test.txt)の
中身だけではなく、"boundary=AaB03x" による区切りや、
Content-Disposition なども書き込まれている必要があります。
≪仮定2≫RFC 4918 の場合
いわゆる「WebDAV」の場合です。HTTP の通信である以上、これも
> Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
で実装できない事はないですが、WebDAV の操作であれば、
ADO のバージョン 2.5 以上を利用するのが簡単だと思います。
http://q.hatena.ne.jp/1108018134
もっとも、今回は恐らく WebDAV では無いのだと思います。
(WebDAV の場合、POST 以外のメソッドも利用される事になるので)
http://www.studyinghttp.net/method#WebDAV_Method
≪仮定3≫Web サービスとして SOAP でやり取りする仕様であった場合
この場合、最初に提示されていた
> Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
でも実装できない事はないですが、通常は SOAP クライアント用の
CreateObject("MSSOAP.SOAPClient") を使った方が便利でしょう。
http://msdn.microsoft.com/ja-jp/library/ms997641.aspx
http://www.atmarkit.co.jp/fdotnet/wwebserv/wwebserv011/wwebserv011_002.html
≪仮定4≫そのサーバーで定められた独自の形式の場合
分かっているのは POST 送信であるという事だけなので、これだけでは
ファイルデータをどのように送出すべきなのか分かりません。
サーバー管理者に、詳しい仕様を確認してみてください。
魔界の仮面弁士 様
再度、ご丁寧にありがとうございます。
貴殿から頂きました質問に応えられるほどの知識がございません。
漠然とHTTPでPOSTしたいとの言い方しかできません。。。
やり方は色々とあるということだけは理解できました。。。
どうもありがとうございます。
> 隣のPCに共有化した「WORK」というフォルダへ
httpじゃないでしょ。
Windowsの共有フォルダでしょ?
であれば、
> もし、単なる共有フォルダとして公開されているだけならば、
> FileCopy "C:\test.txt", "\\" & server & "\WORK\test.txt"
> でコピーできますよ。フォルダへの書き込み権限は必要ですけれども。
で回答終了。
httpでやりたいというその共有化されたマシン、Webサーバ入ってるの?
入ってないなら、まずそこから〜
> Windowsの共有フォルダでしょ?
「Web 共有」で設定したという可能性も無いとは言えないかと。>ha? さん
あるいは、今は共有フォルダかも知れないけれど、後々は
>> 最終的には、別のエリアにあるサーバーに対して、HTTPでPOSTして、
>> 宛先上にEXCELファイルを作成したいと思っています。
に持っていきたい、という状況なのかな、と想像しています。
> やり方は色々とあるということだけは理解できました。。。
何にせよ、それが本当に HTTP でなければならないのかどうかも含めて、
詳細な仕様は回答者側には分かりませんので、その「HTTP で POST」という
仕様を出した方に、詳しい話を聞いてみる事をお薦めします。>MOONEy / MOONEY さん
>HTTPでPOSTして、
>宛先上にEXCELファイルを作成したいと思っています。
これは無理なんじゃないの?