したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

VB6でInetを使いサーバにファイルを書き込みたい

1みや:2009/03/01(日) 20:48:52
ファイルをサーバに転送したいので下記のようにプログラムを作りました。
環境はVB6,サーバはレンタルサーバーです。
Command1をクリックしてもエラーは出ませんが、何のメッセージも帰りませんし、サーバーにファイルが転送できません。
このプログラムは「Visual Basic 逆引き500の極意」のサンプルを使いました。
宜しくお願いいたします。

Private Sub Command1_Click()
With Inet1
.URL = "ftp://レンタルサーバのURL" ' URL
.UserName = "*************" ' ユーザー名
.Password = "*********" ' パスワード

' サーバーにファイルを送信
.Execute , "PUT c:sample.txt /public_html/*****/sample.txt"
Do While .StillExecuting = True
DoEvents
Loop
End With
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vntGetData As Variant ' 受信データ

' データ(コマンドの結果)を取得する
If State = icResponseCompleted Then
vntGetData = Inet1.GetChunk(1256, icString)
MsgBox vntGetData
End If
End Sub

2igoten:2009/03/02(月) 07:55:21
ぱっと見たとき、単なる書き間違いかもしれないけど、
.Execute , "PUT c:sample.txt /public_html/*****/sample.txt"

.Execute , "PUT c:\sample.txt /public_html/*****/sample.txt"
かな

3みや:2009/03/02(月) 09:00:39
早速ありがとうございます。
すみません。書き間違いでした。
"PUT c:\sample.txt /public_html/*****/sample.txt"が正しいのです。
一回目の、Command1_Clickで、Inet1_StateChangedの引数に「1」がでます。
さらにCommand1_Clickをすると、「9」がでました。
どうぞよろしくお願いたします。

4igoten:2009/03/02(月) 13:21:10
1は「コントロールは、指定されたホスト コンピュータの IP アドレスを調べています。」
9は「コントロールは、ホスト コンピュータとの接続を解除しています。」
ですね。
プロクシ経由なんてことは有りませんか。
他のFTPソフトでは接続出来ていますか?
私にも「FTP忠太」などが有りますが。

5みや:2009/03/03(火) 01:50:47
プロクシ経由ではありませんし、FTPソフトで接続できています。
FTPソフトはFFFTPを使っています。

FTPソフトの設定を調べてみますと、
1)PASVモードを使う
2)ポート番号が21となっています。
この二つの件を意識せずにいますがいいのでしょうか。

6igoten:2009/03/03(火) 07:46:19
インターネットトランスファーコントロール(Inet)はパッシブ モードをサポートしていません。
http://support.microsoft.com/default.aspx?scid=kb;ja;409931
更にinetコントロールは複雑な操作には向きません、私はWinInet.dll(API)の
FtpPutFileを使用しいます。

7みや:2009/03/03(火) 10:10:27
ありがとうございます。
インターネットトランスファーコントロール(Inet)はパッシブ モードをサポートしていないのですか。

FtpPutFileのサンプルを使って、下記のようになりました。
インターネットに接続完了し、サーバ内のディレクトリ変更も成功しました。
最後のファイルをアップロードしたところでエラーが出ました。

エラーメッセージは「ファイルの取得に失敗しました」で、番号は「12003」
でした。Cドライブの直下にsample.txtがあるのは確認済みなんですが。

何かお分かりになりましたら宜しくお願いたします。


****イカが使用したプログラムです。
'FTPサーバのカレントディレクトリを変更
result = FtpSetCurrentDirectory(hConnection, "/public_html/xxxx")
If (result <> 0) Then 'ディレクトリ変更成功
      *** ここまではOKでした **
'ファイルをアップロード
result = FtpPutFile(hConnection, "c:\sample.txt", "sample.txt", FTP_TRANSFER_TYPE_UNKNOWN, 0)
If (result = 0) Then 'アップロード失敗
      *** ここでエラーになりました **
MsgBox "ファイルの取得に失敗しました。" & Err.LastDllError
End If

8igoten:2009/03/03(火) 12:04:20
InternetConnectの時に INTERNET_FLAG_PASSIVEは設定してますか?
多分指定してるんでしょうね。
後は、相手が2000サーバーの場合は
sample.txt -> /sample.txt
にする必要が有った気がします。
FTP_TRANSFER_TYPE_UNKNOWN の代わりに FTP_TRANSFER_TYPE_ASCII
を指定してみるとか。
そんな所しか今のところ思いつきません。

9みや:2009/03/04(水) 04:25:55
ありがとうございました。サーバーに書き込むことができました。
INTERNET_FLAG_PASSIVEを設定していませんでした。
適切にご指導いただき大変感謝しています。今後もよろしくお願いたします。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板