• ベストアンサー

VBでFTPサーバ側のファイルの更新日時を取得したい

質問があります。 どなたか御教授ください。よろしくお願いします。 【質問】 FTPにて、サーバー側(OS:Solaris LANG:japan TZ:JST )にあるファイルの 更新時間を取得したい。 クライアント(OS:Win2k VB5) 【現状】 Windows標準のwininet.DLLを使用して手製のFTPツールを作成したのですが サーバー側の情報を取得した所文字化けします。 これはEUC→SJIS変換にて対応しようとしたのですが、VBはエンコーディングが 弱いためこれも手製のエンコーダーを作成したところバグりまくっています。 また、wininet.DLLが日本語に弱い?ためサーバー側をAmerica仕様にしても 日本仕様でわざわざ取得してきます。

noname#16472
noname#16472

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

  • ベストアンサー
  • momoturbo
  • ベストアンサー率55% (49/88)
回答No.2

以下のHPを参考にするとうまくいきそうな気がします。 取得したファイルのFILETIME構造体をCurrencyに コピーする作業がいりますけど。 参考にしてください。 http://vbvbvb.com/jp/gtips/0101/gFtpFindFirstFile.html http://plaza5.mbn.or.jp/~heropa/vb16.htm

noname#16472
質問者

お礼

ありがとうございます。とても参考になります。 みなさまの御教授のおかげで、なんとかできました。 ありがとうございました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

> サーバー側の情報を取得した所 どのような方法で? >手製のエンコーダーを作成したところバグりまくっています。 フリーのライブラリを使えばいいのでは? >サーバー側をAmerica仕様にしても日本仕様でわざわざ取得してきます。 ??

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=175765
noname#16472
質問者

お礼

情報取得方法は、FtpFindFirstFile関数やFtpCommand関数にてLISTを取得しました。 フリーのライブラリを使用せず、できるだけExeの中で処理を行いたいのです。そのために変換モジュールを作成したのですがこれがなかなか・・・ America仕様というのは語弊でした。すいません。 タイムゾーンの設定でグリニッジ標準時にサーバーを設定しても日本時間でわざわざ取得してくるというものです。 このため、APIにて取得した日時も正常にSystemTime変換できません。 これに関しては???です。 今しばらく調査してみます。 回答ありがとうございました。

関連するQ&A

  • VB6で作ったFTPソフトに関して

    ウイルスセキュリティのファイヤーウオールがONになっていると、VB6で作ったFTPソフトで接続できません。ファイヤーフォールの設定は、VB6のexeレベルで許可してあります。XP SP2ですが、そちらのファイヤーウオールは、許可しておけば接続できました。ウイルスセキュリティのファイヤーウオールをOFFにした場合OKです。使っているソフトは32ビット版はwininet.dllで16ビット版はwinsock.dllです。どちらも同じ症状です。何か登録するDLL,OCXはあるのでしょうか?

  • ftpクライアントでの接続後の、サーバ側のファイル一覧の取得方法

    c言語で、ftpプロトコルを使用し、ftpサーバまで接続することができたまでは良かったのですが、サーバ側のファイル一覧を取得する方法(フローチャート)が分かりません。 すみませんが、ご教授よろしくお願いいたします。

  • VB.NETでサーバーからFILEを取得する

    サーバー上にあるテキストファイルを FTPで取得したいのですが VBであればInetを使用して↓のように取得が可能 だったのですがVB.NETでのInetの使用方法がわかりません どなたかご存知の方がいらしたらご教授願えますか? また、別の方法がありましたらアドバイスをお願いします。 宜しくお願いいたします。 ==================== Dim FileName As String Inet.URL = "ftp://hostname/home/temp/" Inet.UserName = "username" Inet.Password = "password" Inet.Execute(, "GET test.txt " & FileName) Do While Inet.StillExecuting = True DoEvents() Loop MsgBox("ダウンロード終了") ====================

  • WEBサーバーに文字列を送り戻り値取得

    WEBサーバーに文字列送信の開発を行っています。 開発環境はVB6(アプリ部分)+VB2005(DLL部分)です。 文字列生成はVB6でしています。 サーバーに文字を送るところは.netでDLLを作っています。 VB6はそのdllを参照し関数をcallしています。 送信した文字列に何か不備等があればサーバーから1から5までのエラー区分が返ってくるのですが、戻り値を取得することができません。 どうすれば取得できるのでしょうか? <<サーバーとの通信方法>> サーバーに文字列を送るのはWebClientのUploadStringAsyncを使用しています。 サーバー側で文字列が送られているのは確認できています。 サーバーの戻り値を取得するのはUploadStringCompletedイベントで取得していますが、 通信が終わりVB6側に戻ってきた時にUploadStringCompletedイベントが起きているらしく戻り値を取得できません。 どなたかご教授いただければと思います。

  • VB.NETのFTPダウンロードについて

    お世話になっております VB.NETでFTPサーバからファイルをダウンロードするアプリを作っていますが、FTPのセキュリティ設定でSSLを使用することになりました(FTPSです)。 もともとは普通のFTPだったので、ここ→http://dobon.net/vb/dotnet/internet/ftpwebrequest.htmlを参考にしながら作成していましたがFTPSになると、なにか特殊な処理が必要になるのでしょうか? ちなみにFTPサーバーはIIS7.0です。

  • VB6.0でFTPサーバーの画像を直接表示したい

    VB6.0でFTPサーバーにある画像を取得し表示するプログラムがあるのですが、 ダウンロード件数が増えるとレスポンスが極端に悪くなります。 (例:4枚の場合6秒。24枚の場合30秒。) 処理手順は下記のようにしています。  1.FTPサーバーから画像をダウンロードし、PCのハードディスクに保存。  2.保存した画像を画面に表示。  3.DLした画像をPCのハードディスクから削除。 質問なのですが、パソコンに一時的に保存せずに、 FTPサーバーの画像を直接表示する方法はありませんでしょうか?

  • FTPによるファイル取得について

    一定の間隔であるサーバに接続し、画像ファイルを取得するプログラムを作成しています。 C言語で作成されたプログラムより、以下のようなシェルを実行し、画像ファイルを取得することを考えています。 ----------------------------- #!/bin/sh ftp -in <<EOL open 接続先IPアドレス user ユーザ名 パスワード lcd ローカルのディレクトリ cd リモートのディレクトリ mget data[ABC]_${d}.tar.gz quit EOL ----------------------------- ここで、以下のような問題に悩んでいます。 1.上記シェルを実行し、まさにFTPを行っているとき、LAN断などにより遠隔サーバとの接続が切れたときに、だんまり状態となってしまう。 2.FTPが成功した場合、取得したファイルの正当性が保証されるのか?せめてファイルサイズチェックだけでも行いたいが、FTP実行前にファイルのサイズが取得できるか?

  • VB6.0でFTPでのファイルの送受信

    VB6.0でFTPでのファイルの送受信(下記(1))をしようと考えております。 尚、コンポーネントは、インターネットトランスファコントロール(Inet)を使用しております。 (1)"リモートサーバーに対して、複数件のファイルを送信し、無事転送が完了したら(リモートサーバー の指定フォルダに送信された複数件のファイルがあるのを確認後)、  クライアント側のファイル(リモートサーバーに送信が済んだファイル)を消す" という処理を考えております。 ここで、質問なのですが (1)vbを使ったFTP転送で、複数件のファイルを一括転送(mputコマンドの使用)は、可能か?  (2)もし、(1)が不可能の場合、    "送信するファイルをputコマンドで1つ送って、リモート側にそのファイルがあるのを    getコマンドで確認して、もしgetであれば、クライアント側のそのファイルを消す" という処理を送信するファイル数分繰り返すことになるんですか?        1つのファイルの場合に、Inet1_State_Changeイベントで、ループさせstate = 12 の時( リモート側に正常に送信されたと考えて)、クライアント側のファイルを消していいのでしょうか?    VBのヘルプを見ると、state = 12 は、get処理で使用するというようなことを書いてありますが。     以上 

  • VB.NETでFTPプログラム

    VB.NETでFTPプログラムを作成しているのですが、 SocketクラスのSendを使って、 そのディレクトリにあるファイル一覧を取得しようと思ってましたが、いざ "NLST"と送ると、 10回に1回位の割合で、返事が返ってきません。 もちろんReciveでサーバーからの返事を読み取っていますが、返事が返ってこないと、そこでとまってしまいます。 なにかよい対策がありましたら、ご教授ください。

  • FTPサーバーのファイルの開き方

    現在windows vistaでFTPサーバーを作りました。 ソフトは「Nekosogiftpd」を使用しています。 接続する際に、エクスプローラーを使用していますが、 クライアント側でファイルを開くと、エクスプローラでファイルが開いてしまいます。 たとえばクライアント側でエクセルを開くと、エクスプローラーの中でエクセルが開いてしまいます。 これをクライアント側のエクセルプログラムで開くことは可能でしょうか? エクセルを含め、全てのプログラムがエクスプローラーで開いてしまいます。 したいことは、クライアントの接続数がおおいため、 FTPサーバーを共有フォルダのように使用したいと思っています。 もしくは、他に接続数無制限で共有フォルダのようなことは出来ますでしょうか? (OSはWindows vista以外では考えいません。) 分かる方いらっしゃれば、お助け下さい。。。