VBでファイル転送


MOONEY  2009-07-15 19:44:33  No: 142227

皆様いつもお世話になっております。

隣の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)です。


魔界の仮面弁士  2009-07-15 20:20:15  No: 142228

> 隣のPCに共有化した「WORK」というフォルダへ「test.txt」を
> 転送したいのですが、

http で送信しようとしているのは、その WORK フォルダが
『WebDAV』のフォルダとして公開されているからなのでしょうか?

もし、単なる共有フォルダとして公開されているだけならば、
  FileCopy "C:\test.txt", "\\" & server & "\WORK\test.txt"
でコピーできますよ。フォルダへの書き込み権限は必要ですけれども。


MOONEy  2009-07-15 21:21:50  No: 142229

魔界の仮面弁士 さま

ご返信ありがとうございます。
申し訳ないことに聞かれている質問がわからないです。。。
最終的には、別のエリアにあるサーバーに対して、HTTPでPOSTして、
宛先上にEXCELファイルを作成したいと思っています。


魔界の仮面弁士  2009-07-15 22:07:07  No: 142230

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 送信であるという事だけなので、これだけでは
ファイルデータをどのように送出すべきなのか分かりません。
サーバー管理者に、詳しい仕様を確認してみてください。


MOONEY  2009-07-16 21:04:36  No: 142231

魔界の仮面弁士  様

再度、ご丁寧にありがとうございます。
貴殿から頂きました質問に応えられるほどの知識がございません。
漠然とHTTPでPOSTしたいとの言い方しかできません。。。

やり方は色々とあるということだけは理解できました。。。
どうもありがとうございます。


ha?  2009-07-16 22:12:52  No: 142232

> 隣のPCに共有化した「WORK」というフォルダへ
httpじゃないでしょ。
Windowsの共有フォルダでしょ?
であれば、
> もし、単なる共有フォルダとして公開されているだけならば、
>   FileCopy "C:\test.txt", "\\" & server & "\WORK\test.txt"
> でコピーできますよ。フォルダへの書き込み権限は必要ですけれども。
で回答終了。

httpでやりたいというその共有化されたマシン、Webサーバ入ってるの?
入ってないなら、まずそこから〜


魔界の仮面弁士  2009-07-17 03:03:02  No: 142233

> Windowsの共有フォルダでしょ?
「Web 共有」で設定したという可能性も無いとは言えないかと。>ha? さん

あるいは、今は共有フォルダかも知れないけれど、後々は
>> 最終的には、別のエリアにあるサーバーに対して、HTTPでPOSTして、
>> 宛先上にEXCELファイルを作成したいと思っています。
に持っていきたい、という状況なのかな、と想像しています。

> やり方は色々とあるということだけは理解できました。。。
何にせよ、それが本当に HTTP でなければならないのかどうかも含めて、
詳細な仕様は回答者側には分かりませんので、その「HTTP で POST」という
仕様を出した方に、詳しい話を聞いてみる事をお薦めします。>MOONEy / MOONEY さん


とにかく  2009-07-17 05:47:11  No: 142234

>HTTPでPOSTして、
>宛先上にEXCELファイルを作成したいと思っています。

これは無理なんじゃないの?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加