• ベストアンサー

FTP対応のアプリケーション

TAGOSAKU7の回答

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.5

ご指名ありがとうございます。(←変な飲み屋みたい) こんな感じ?   With Inet1     .URL = "ftp://ftp.hoge.com"     .UserName = "TAGOSAKU7"     .Password = "内緒"     .Execute , " DIR"   End With UserNameとPasswordは、ExecuteかOpenURLを発行すると同時に送られているようです。 UserNameが空状態であれば "anonymous"を送っているようです。 でも、 >"ftp://user:pwd@URL" 使用方法によってはいいと思いますよ。 画面にさえ表示しなければ・・・ それと、、、 受けのサーバのポートは特に意識する必要はないと思います。 WinSockでもないので、ソケットのことを考える必要もないし、手順を間違わなければサーバに設定を施さなくてもできると思います。

lily02
質問者

お礼

ありがとうございました。 Inet.OpenURL ではうまくいかないのですが、Inet.Execute ではうまくいきました。一行で書くと Inet.Execute "ftp://username:password@hostname", "GET test.lzh e:\tmp\test.lzh" みたいな感じです。 GET(ダウンロード)もPUT(アップロード)もこれでいけました。 もちろん   With Inet1     .URL = "ftp://ftp.hoge.com"     .UserName = "TAGOSAKU7"     .Password = "内緒"     .Execute , " DIR"   End With の書き方でもOKでした。 ところが、問題点がふたつ。 1.ダウンロードやアップロードが終わってアプリケーションを終了するときに、   Inet.Cancel を記述しているのですが、5秒ぐらいかかります。   Private Sub Inet.StateCanged(Byval State As Integer) を記述すると   なぜかすぐ終わります。解せません。 2.GET と PUT はうまくいくのですが、CD や DIR がちゃんと動きません。 まだ、分かっていないところがあるのだと思います。 またいろいろとやってみますが、何かお気づきのことがありましたらお教えください。取り敢えずお礼まで。

lily02
質問者

補足

ありがとうございます。 早速試してみます。 仕事先のことなので結果のご報告は夕方になりますが。

関連するQ&A

  • inetコントロールを使用したFTP送信の質問その1

    ローカルにあるファイルを、FTPサーバに送信するプログラムを作成しました。 inetコントロールを使用して、以下のようなプログラムを組みました。 Private sub ftp()  Inet1.Protocol=icFTP  Inet1.Url="ftp://xxx.xxx.xxx.xxx/"  Inet1.UserName="aaaa"  Inet1.Password="bbbb"  Inet1.Execute , "SEND x:\xxx\xxx.txt xxx/xxx.txt" End sub Private sub Inet1_StateChanged(Byval State As Integer) Dim sMsg As String  Select Case State   Case icRequestSent    sMsg = "送信完了"    TCall LogWrite(sMsg) ログをファイルに書く(自作関数)   Case icError    sMsg = Inet1.ResponseCode & " " & Inet1.ResponseInfo    Call LogWrite(sMsg) エラーログをファイルに書く(自作関数)  End Select End Sub ファイルを複数送信するため、「sub ftp()」は複数回呼び出されます。 上記プログラムにCLOSEコマンドとCANCELメソッドを追加して、以下のようにしたほうがよいのでしょうか? CLOSEコマンドとCANCELメソッドの使い方がよくわからず、悩んでいます。 Private sub ftp()  Inet1.Protocol=icFTP  Inet1.Url="ftp://xxx.xxx.xxx.xxx/"  Inet1.UserName="aaaa"  Inet1.Password="bbbb"  Inet1.Execute , "SEND x:\xxx\xxx.txt xxx/xxx.txt"  Inet1.Execute , "CLOSE" End sub Private sub Inet1_StateChanged(Byval State As Integer) Dim sMsg As String  Select Case State   Case icRequestSent    sMsg = "送信完了"    TCall LogWrite(sMsg) ログをファイルに書く(自作関数)   Case icError    sMsg = Inet1.ResponseCode & " " & Inet1.ResponseInfo    Call ErrLogWrite(sMsg) エラーログをファイルに書く(自作関数)    Inet1.Cancel  End Select End Sub

  • FTP接続での不具合

    以下のコードでFTPへの接続を行っていますが、わからないところがあります。 (1)「リモートホストに接続できません」とエラーが出てしまいます。 どのあたりが怪しいのかわからず困っています。 (2)GET の書き方について "GET test.txt C:\Test\test.txt"    ******** 受信するファイル名の指定の仕方ですが、上記の*******印部分ですが、 たとえばURLがpc000のTempフォルダの下にあるtest.txtを受信したい場合はディレクトリの指定の書き方がわかりません。 "GET /Temp/test.txt C:\Test\test.txt" と書いたりもしていますが、はたしてこの書き方があっているのかわかりません。 ご教示ねがえませんでしょうか? よろしくお願いいたします。     'FTP接続------------------------------------- Inet1.URL = "FTP://pc000" Inet1.Password = "xxx" Inet1.UserName = "yyy" Text1.Text = Inet1.OpenURL Inet1.Execute Inet1.URL, _ "GET test.txt C:\Test\test.txt" '-------------------------------------

  • 日本語混じりのファイルをランダムアクセスで読みこむ場合

    ファイルを1024バイトずつ読みこみ、その内容をソケットでホストへ送るというアプリがあります。 ファイルを「1024バイト読んで→送信」を繰り返すのですが、ファイルを読みこむところ(Get)で日本語が混じったときにエラーを生じます。 「レコード長が一致しません」というエラーメッセージです。 日本語がはいる桁数だけバイト数は減るためだと思いますが、ランダムアクセスで読みこむと場合の記述の仕方で、何とかならないものかと思案しています。 どなたかご教授ください。よろしくお願いします。 <プログラム記述例>   Dim filenum As Integer   Dim filename As String   Dim buffer As String * 1024   filename = "e:\tmp\file.txt"   filenum = FreeFile   Open filename For Random Access Read As #filenum Len = 1024   Do While Not EOF(filenum)     Get #filenum, , buffer   Loop   Close #filenum

  • FTPサーバからダウンロードするには?

    windowsXP,VB6,SP5で開発しています。 下のコードはヘルプからなんですが、 これをURLとファイル名を変更してやってみても、全然できません。 Private Sub Form_DblClick() Inet1.AccessType = icUseDefault Dim b() As Byte Dim strURL As String ' この URL は有効な URL であると仮定します。 strURL = "ftp://ftp.microsoft.com/" & _ "developr/drg/Win32/Autorun.zip" ' ファイルをバイト配列として取得します。 b() = Inet1.OpenURL(strURL, icByteArray) Open "C:\Temp\Autorun.zip" For Binary Access Write As #1 Put #1, , b() Close #1 MsgBox "完了しました。" End Sub ここの部分でタイムアウトになってしまいます。 b() = Inet1.OpenURL(strURL, icByteArray) FTPサーバのアドレスとかちゃんとあってます。 どなたか、解決方法をご教授くださいませm(_ _)m

  • 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("ダウンロード終了") ====================

  • FTPで見えるファイルと見えないファイルがあります。

    FTPで見えるファイルと見えないファイルがあります。 CentOS5.4にvsftpdをインストールして、PCからFTP転送を行おうとしています。 /tmpディレクトリにファイルを転送すると、FTPツールに転送したファイルは表示されますが、 元々/tmpにあったファイルはFTP転送ツールに表示され無い状態となっています。 ・FTP転送ツールを再起動しましたが、転送したファイルしか見えません。 又、FTP転送ツールではなく、DOS窓上でFTP接続して、DIRで見た時も転送したファイルしか見えません。 このことから、FTPツールの問題ではなく、FTPサーバー側の問題を判断しました。 ・Linuxサーバを再起動しても、転送したファイルしか見えません。 ・Linuxサーバ上で、転送したファイルを"cp -p"でコピーした場合、コピーしたファイルはFTPツール上見えません。 現在Linux上では、 tmp>ll -rw-r--r-- 1 root root 2 5月 13 17:20 a1.txt -rw-r--r-- 1 root root 2 5月 13 17:20 a2.txt -rw-r--r-- 1 root root 2 5月 13 17:20 b1.txt となっているのですが、 a1.txt:FTP転送したファイル a2.txt:a1.txtを cp -p a1.txt a2.txtでコピーした b1.txt:viで作成した FTPコマンドで見ると、 ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 2 May 13 08:20 a1.txt というようにa1.txtしか見えません。 原因はわかりましたらご教授ください。よろしくお願いいたします。

  • テキスト文書(.txt)→エクセルにインポート

    エクセルから、テキスト文書(.txt)をインポートする機能を VBAで作成しているのですが、1つのセルに複数の行を 入力する方法がわからず、困っています。ご存知の方い らっしゃいましたら、ご教授よろしくお願いします。 ↓途中までのコードです。↓ Sub ボタン1_Click() Dim dir_name As String, file_name As String Dim rn As Integer dir_name = Application.GetOpenFilename( _ "テキストファイル (*.txt),*.txt", 1, _ "読み込み元のファイルをどれか一つ開いてください" _ ) If dir_name = "False" Then Exit Sub file_name = Dir("*.txt", vbNormal) rn = 1 ' 開始行 - 1 を設定 Do Until file_name = "" rn = rn + 1 Call ImportText(file_name, rn) file_name = Dir() Loop End Sub '------------------------------------------------------- Sub ImportText(file_name As String, rn As Integer) Dim FileNum As Integer Dim TextLine As String Dim cn As Integer FileNum = FreeFile() Open file_name For Input Access Read As #FileNum Application.StatusBar = "ファイル""" & file_name & """の内容を読み込んでいます。" On Error GoTo CloseFile Do Until EOF(FileNum) Line Input #FileNum, TextLine If cn < 6 Then cn = cn + 1 Cells(rn, cn).Value = Trim(TextLine) Else ★★★★★★★★★★★★★★★ End If Loop End Sub 『 ★★★★★★★★★★★★★★★』となっているところに、 Cells(rn, cn).Value = Trim(TextLine) と書いて、1つのセル に残りの文章を全て入れようとしたのですが、このままでは上書 きされてしまい、最後の1行しか残っていません。 [例]残りの文字 こんにちは こんばんは おかえり。 ↓これをそのまま1つのセルに↓ こんにちは こんばんは おかえり。 と入れるには、どのような記述をすれば良いのでしょうか? (Excel2007を使用しています。)

  • WSHファイルからFTPを利用してダウンロードする

    batファイル,もしくはWSHファイルを使用してのFTPサーバからのファイルダウンロードを行う際の記述方法について質問致します。 行いたいことはFTPサーバ側に日毎のディレクトリが作成され その中に格納されるテキストファイルを自動でローカルの指定ディレクトリに上書きする手順になります。 WSHに関しては全くの素人なので非常に苦戦しております… FTPサーバ側 /@day/*.txt @dayには本日の日付が2桁で入ります。 1月1日なら01、2月23日なら23 Local保存側 D:\temp お手すきの時にでもご教授頂ければ幸いです。

  • VB2005でのファイル操作について

        Dim filedata As String Dim fileNum As Integer Dim fileName As String Dim i As Integer fileName = "C:\Paradata.txt" fileNum = FreeFile() FileOpen(fileNum, fileName, OpenMode.Output) For i = 0 To 9 filedata = data(i, 0) & "," & data(i, 1)・・・・・ PrintLine(fileNum, filedata) Next FileClose あるボタンを押しますと上記のようにテキストファイルにデータを保存しようとしているのですが、1回目のボタンクリックではエラーが無いのですが2回目以降は"別のプロセスで使用されているため、プロセスはファイル 'C:\Paradata.txt' にアクセスできません。"のエラーが発生してしまいます。いろいろと調べているのですがまだわからないのでどこがおかしいか教えてください。よろしくお願い致します。

  • VBAでFTPサーバーへのアップデート

    BASP21でのFTPサーバーへのアップデートが出来ないです。 BASP21をインストールし、サーバーのユーザー名やパスワードも あっている状態です。 しかし、アップデートすると 「を送信できませんでした。」 と表示され、アップデートできませんでした。 「FTP接続できませんでした。」は抜けているので、 それ以外が原因だとは思うのですが分かりません。 Visual Basicのサンプルから書きました。 以下の通りです。 初心者のため質問に不備があるかもしれません。 予めお許しください。 Sub FTPサーバーにUP() Dim FTP, rc As Long, Server As String, User As String, Pass As String Dim Target As String, Folder As String Set FTP = CreateObject("basp21.FTP") ''FTPオブジェクト Server = "ftp.●●●●●●.jp" ''ホストアドレス User = "●●●●●●" ''ユーザー名 Pass = "●●●●●●●●" ''パスワード Target = "C:\Users\●●\Desktop.エクセルファイル.xls" ''送信ファイル If Target = "False" Then Exit Sub Folder = "/home/●●●●●●/●●●●/●●●/状況" rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If MsgBox Dir(Target) & "を送信しました。", vbInformation FTP.Close End Sub