BinaryWriteサーバ間ファイル書き込みの方法と制約

このQ&Aのポイント
  • ASPのBinaryWriteを使用してサーバ間でファイルを書き込む方法についての質問です。
  • 現在、クライアントからサーバAのWebページにアクセスし、サーバAの別ページとソケットで接続し、データを受信しています。
  • 受信したデータをテキストファイルに書き込みたいのですが、サーバBに保存することができないようです。
回答を見る
  • ベストアンサー

BinaryWrite サーバ間ファイル書き込み

こんにちは。よろしくお願いします。 ASPでBASP21のソケットオブジェクトを利用して、がちょがちょやってる最中です。 1.クライアントからサーバAのWebページへアクセス。 ↓ 2.アクセスすると、サーバAの別ページをソケットで繋げて、データを受信。 ↓ 3.受信したデータをテキストファイルの中に書き込み、ファイル保存。 そんな感じの機能を作りこんでいる最中です。 大体思い通りになってはいるのですが。。。 3番で少し詰まっています。 「3.ファイル保存」を、サーバBに対して行ないたいのですが、すんなり出来ませんでしたっけ? FileSystemObjectのCreateTextFileは、サーバまたぐと無理みたいだし、 BASP21のBinaryWriteで実現できたような記憶が無きにしも非ずなのですが、「あれ?出来ないぞ?」 となっておりまして。。。 ================================================== Set bobj = Server.CreateObject("basp21") Set bsocket = Server.CreateObject("basp21.socket") rc1 = bsocket.Connect("hogehoge.co.jp", 80, 180) host = "Host: hogehoge.co.jp" & vbCrLf rc1 = bsocket.write ("GET /system/hogehoge.asp?para=abc HTTP/1.0" & vbCrLf & host & vbCrLf) ヘッダ読み飛ばし(略 rc1 = bsocket.read(datax,1) rc1 = bobj.BinaryWrite(datax, "●●●●") ================================================== ●●●●箇所を サーバAのフルパスならもちろん問題なし。 「D:\hogehoge.txt」 サーバAのネットワークパスならアウト。 「\\hogehoge_a\drv_d\hogehoge.txt」 サーバBのネットワークパスもアウト。 「\\hogehoge_b\drv_d\hogehoge.txt」 サーバBのネットワークドライブを切ってもアウト。 「V:\hogehoge.txt」 。。。やっぱ、サーバ間またいでファイル保存ってこのままじゃ出来ませんでしたっけ? あんまり粘る時間も無いので、「4.仕方ないから、サーバAからサーバBにファイルをコピーする」 処理でも作ろうかどうしようか悩んでいるところです。 すみませんが、アドバイスのほどよろしくお願いしますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.1

BASP21のBinaryWriteが共有フォルダの書き込みに対応しているか 知りませんが、もし仮に対応しているとしたら、 少なくともBinaryWriteを実行しているプロセスのアカウントが 共有フォルダ(サーバB)のアクセス許可アカウントとして登録 されているか考慮する必要があります。 (パスワードの確認なしに接続するには、パスワードの一致も 必要でしょう。) このBinaryWriteを実行しているのは、おそらくIISのプロセスか サービス起動されたプログラムのプロセスだと思いますので、 あなたが普段ログインしているユーザアカウントとは別の サービスに割り当てられているアカウントになります。 サービスに割り当てるアカウントは「サービス」のプロパティで 変更可能ですが、IISであれば、IISマネージャでいろいろな 設定が可能です。 あらかじめ「V:」にネットワークドライブを割り当てても同様です。 そのネットワークドライブ割り当ては、あなたがログインした デスクトップアカウントに対して割り当てられているものであり、 サービス起動されたプログラムは、それと別のアカウントで 実行しており、それには「V:」のネットワークドライブは 割り当てられていません。 BinaryWriteが共有フォルダのパス指定に対応していない場合でも、 ネットワークドライブを割り当てて、BinaryWriteを実行するプロセスに そのネットワークドライブを割り当てたアカウントを割り当てれば 書き込みが成功する可能性はあると思います。

STICKY2006
質問者

お礼

アドバイスいただいたのに、お礼が遅くなりすみません。 四苦八苦した結果、結局力量不足だったため、仕様の方が変わる形になって実現してしまいました。 どうしてもサーバまたげなかった。。。(だったかな。 なので、自サーバ内で済むように変更してみたらあっさり行った感じだったかと思います。 。。。ん~。勉強不足~@w@; アドバイスありがとうございました。

関連するQ&A

  • バイナリデータの表示

    ASP初心者です。 下記のソースの表示結果を[表示]→[ソース]で[ファイル保存] を使い"after_test.bin"として保存しました。 バイナリエディターで元の"test.bin"と結果の"after_test.bin"を見比べると 1.'20'が'00'に変わってしまう 2.'0D'→'0D0A'になり1バイトずれる(BinaryWrite?) この問題を回避するには、どうしたら良いのでしょうか?宜しくご指導願います。 '-------------------------------------------- Dim bobj Dim barray Set bobj = Server.CreateObject("basp21") barray = bobj.BinaryRead(Server.MapPath(test & ".bin") Response.BinaryWrite barray Set bobj = Nothing Call Response.End

  • Access2003からシンプルにファイルを添付してメール送信したいと

    Access2003からシンプルにファイルを添付してメール送信したいと考えています。 こちら(http://www.site-cooler.com/kwl/asp/19.htm)を参考に、BASP21というコンポーネントを利用してACCESS上のフォームにボタンを用意してコードビルダで下記のように記述してみましたが、「コンパイルエラー:構文エラー」と表示されました。 どのように改善すれば良いのでしょうか。 ACCESS初心者の為、すみませんがご教示お願いします。 --------------------------------------------------------------------------- Private Sub コマンド0_Click() Set bobj = Server.CreateObject("basp21") bobj.SendMail() <%@ LANGUAGE = VBSCRIPT %> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "smtp.xxxx.co.jp" strTo = "xxxx@xxxx.co.jp" strFrom = "xxxx@xxxx.co.jp" strSub = "件名" strBody = "本文です。" & vbCrLf & "本文終了" strFile = "c:\text.txt" Set bobj = Server.CreateObject("basp21") result = bobj.SendMail(strServer, strTo, strFrom, strSub, strBody, strFile) If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If Response.Write ("メール送信完了") %> If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If End Sub ---------------------------------------------------------------------------

  • サーバー間のファイルの移動(コピー)について

    質問させてください。 ウェブサーバーAとBがあるとします。 サーバー間でファイルを移動(コピー)するプログラムにC.phpがあるとします。 C.phpでウェブサーバーAにあるD.txtをウェブサーバーBの指定したディレクトリに移動(コピー)をするようにしたいのですがどのように記述すればいいのかわかりません。アドバイスお願い致します。 ※移動とコピーはどちらでもかまいません。

    • ベストアンサー
    • PHP
  • サーバー内データファイルの転送

    サーバー内に生成したデータファイルを異なるサーバーに転送するCGIを教えてください。 例)サーバーA内に作成した TEST.TXT をサーバーBに書き込む(転送)方法 よろしくお願いします。

  • ファイル(txt)へ書き込みについて(Stream)

    いきなり、すみません! 現在、二つのテキストファイルがあります。(a.txt と b.txt) a.txtの内容(123)をb.txt(空)へ書き込みたいのですが、どうすればいいか分かりません。 (簡単なサンプルで結構です) よろしく、お願いします~~

  • BASP21によるbase64のデコードについて

    base64でエンコードされた画像ファイルを表示したいと思っています。 basp21でデコードして、BinaryWriteで書き出したんですがうまく表示できません。 CAPICOMを使った場合は正しく表示されます。 basp21でデコードする際になにか処理をはさむ必要があるのでしょうか? 以下作成したサンプルソースです。 ---ソース------------------------------------------ <%@ Language="VBScript" %> <% Set Stream = Server.CreateObject("ADODB.Stream") Set CAPIUtil = Server.CreateObject( "CAPICOM.Utilities" ) Set objBasp = Server.CreateObject("basp21") strEncoded = "/9j/kL・・base64でエンコードされたJpegファイル" strDecoded = CAPIUtil.Base64Decode( strEncoded ) strDecoded2 = objBasp.Base64(strEncoded, 1) Response.ContentType = "image/jpeg" ' Response.BinaryWrite strDecoded ' Response.BinaryWrite strDecoded2 %> ---------------------------------------------ここまで----- 以上よろしくお願いいたします。

  • ブラウザからEXEを起動するには

    VBで作成したEXEファイルをブラウザから起動したいのですが、 うまく行きません。お知恵を拝借させてください。 以下やってみたことです。 1.EXEを起動させるバッチファイルを書いてそれにリンクをする。 →起動時に確認のポップアップが出てきて鬱陶しい 2.ASPで、以下のような記述をする <% Set bobj = Server.CreateObject("basp21") rc = bobj.Execute("C:\×××\×××.exe",0,stdout) if rc = 0 then Response.write "成功" Elseif rc = -1 then Response.write "エラー" Elseif rc = -2 then Response.write "タイムアウト" End if %> →画面上は「成功」の文字が出てくるけれども、EXEは起動しませんでした。  しかし、よくよく見るとプロセスだけは立ち上がっていて。。。  どうすればきちんと起動するのでしょうか? よろしくお願いします。

  • 複数ファイルへの書き込み

    php初心者です。 現在formから送ったデータをa.txtファイルに書き込む様にしているのですが、もう1つ別のtxtファイルにも残さないといけなくなりました。 現在actionでa.txtを指定して書き込んでいるのですが、1回の送信でa.txtと別のディレクトリにあるb.txtにデータを書き込むにはどうしたら良いのでしょうか? actionで2つ指定なんてことはないですよね・・・。 初歩的な質問ですがわからなくて困っています・・・、どなたかアドバイスいただけたら幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • Basp21に詳しい方!!

    まったくの初心者です。 送信するメールにファイル添付されるようにしたいのですが、 どうしてもエラーが出てしまいます。 どこが間違えていますか? ----------------------------------------------------------------------------------------------------------- 'Basp21でメールを送信します。 Set Basp = Server.CreateObject("basp21") tb = Request.TotalBytes br = Request.BinaryRead(tb) fn = Basp.FormFileName(br,"includedFile") fpath = Mid(fn,InstrRev(fn,"\")+1) leng = Basp.FormSaveAs(br,"includedFile",fpath) End If rc = Basp.SendMail(host, mailTo, mailFrom, subject, body, fpath) If rc = "" Then Response.Write "送信完了" Else Response.Write "送信失敗:" & rc End If set basp = Nothing

  • 任意のディレクトリ以下に存在するファイル数について

    任意のディレクトリ以下に存在するファイルを数える方法について教えて下さい。 現在、あるディレクトリ以下にある特別な命名規則のファイルを探し、リネーム or読み込みを行うような処理を考えています。 例 /* *********************************************************************** */ ☆あるディレクトリ以下に・・・    aaaaa.txt    b.log    AAA_hogehoge.txt    BBB_hogehoge.txt    CCC_hogehoge.txt      ^^^^^^^^^^^^ここの部分は共通  があったとすると、AAA_hogehoge.txt読み込み→BBB_hogehoge.txt読み込み →CCC_hogehoge.txt読み込み。 ☆あるディレクトリ以下に・・・    DDD_hogehoge.txt  のみがあったとすると、DDD_hogehoge.txt→hogehoge.txtへリネーム。 /* *********************************************************************** */  上記の例のような事を考えています。その際「任意のディレクトリ以下に存在する 特定パターンに合致するファイル数(*hogehoge.txtで掛かるファイル数)とファイル名が 欲しいのです。 何か良い方法、使える関数等がありましたら教えて下さい。 なおOSはLinux、ソラリス、コンパイラはgccを考えています。

専門家に質問してみよう