- PR -

FTP転送でのデータコネクション情報取得について

投稿者投稿内容
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-06-06 14:21
引用:

yamayamaさんの書き込み (2007-06-06 13:23) より:
何かコーディングで足りない部分があるのでしょうか?



ソースをみるかぎり、
コーディングは足りないのではなく、間違っています。

TCP/IP、SocketやTCPListenerの理解が足りません。

FTPは結構めんどくさいプロトコルです。
もう少し基礎的な勉強してからとりかかるか、
FTPRequestクラスなど、より高位の実装を使いましょう。
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2007-06-06 17:18
SOCKETでの作成を中断して
WebClientを利用した、FTP転送を行おうと
考えたのですが転送終了後にリネームを行うことは可能なのでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-06-06 23:59
引用:
yamayamaさんの書き込み (2007-06-06 17:18) より:
SOCKETでの作成を中断して
WebClientを利用した、FTP転送を行おうと
考えたのですが転送終了後にリネームを行うことは可能なのでしょうか?

WebClientで試したコードを書いてくれないと答えにくいです。

転送時、サーバー側のURIを指定するときに、単にクライアントと違うファイル名を指定すれば
いいと思うのですが、転送「終了後」である必要があるということですか?
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2007-06-08 08:51
返事が遅くなり申し訳ありません。
ファイルのリネーム時期は、転送終了後でなければいけない仕様となっています。
(おそらく、サーバー側のプログラムが動作してしまうのを避けるためだと思われ
ます)
下記にコードを示します。

Public Sub UploadFile(ByVal fileName As String)
Try

Dim newFile As String = IO.Path.GetFileName(fileName)
'送信先URIを指定
Dim uri As String = "ftp://" & myServerName & "/" & myDirectory & "/" & newFile
Dim myFile As String = fileName

myClient = FtpWebRequest.Create(uri)
myClient.Credentials = New NetworkCredential(myUserID, myPassword)
myClient.Method = WebRequestMethods.Ftp.UploadFile

myClient.UseBinary = False
Using st As Stream = myClient.GetRequestStream()
Using fs As New FileStream(myFile, FileMode.Open)
Dim buf(1024) As Byte
Dim count As Integer = 0

Do
count = fs.Read(buf, 0, buf.Length)
st.Write(buf, 0, count)
Loop While count <> 0
End Using
End Using

Catch ex As Exception
Throw New IOException("ファイルアップロードエラー")
End Try

End Sub

この関数の後にリネームしたいと考えております。

宜しく御願いします。
rvmx
大ベテラン
会議室デビュー日: 2002/09/26
投稿数: 184
お住まい・勤務地: 愛媛県
投稿日時: 2007-06-08 09:21
今日は

試してはいませんが、
myClient.Method = WebRequestMethods.Ftp.Rename
myClient.RenameTo=NewName
では変更できませんか?
yamayama
ベテラン
会議室デビュー日: 2006/02/10
投稿数: 68
投稿日時: 2007-06-08 12:37
早速のご返答ありがとうございます。

早速試してみようと思います。

スキルアップ/キャリアアップ(JOB@IT)