FTPアップロード、ファイル属性変更
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' ローカルターゲットディレクトリ
Dim target As String = "C:\user\vb\2008_04\lightbox_patio"
' ローカルターゲットディレクトリ以下のディレクトリ一覧
Dim subFolders As String() = System.IO.Directory.GetDirectories( _
target, "*", System.IO.SearchOption.AllDirectories)
Dim files As String() = Nothing
Dim ftp As String = ""
Dim wc As System.Net.WebClient = Nothing
' アップロード用の WEB クライアント
wc = New System.Net.WebClient()
' アップロード用の ユーザー・パスワード
wc.Credentials = New System.Net.NetworkCredential("user", "xxxxxxxx")
' ローカルフォルダの一覧をソート( ディレクトリ作成順序の為の整列 )
Array.Sort(subFolders)
' ローカルフォルダを列挙
For Each dir As String In subFolders
' リモートディレクトリ作成用のパス作成
' ここでは、uploadTest 以下に作成するようにきめうち
ftp = "ftp://lightbox.if.land.to/uploadTest" & (dir.Replace(target, "")).Replace("\", "/")
' ディレクトリ作成
MkDir(ftp)
' デバッグ用の標準出力
' Console.WriteLine(ftp)
' 各ローカルディレクトリ内のファイル一覧
files = System.IO.Directory.GetFiles(dir, "*", IO.SearchOption.TopDirectoryOnly)
' ファイルを列挙
For Each uploadTarget As String In files
' アップロード( 上書き )
wc.UploadFile( _
ftp & "/" & System.IO.Path.GetFileName(uploadTarget), _
uploadTarget _
)
' デバッグ用の標準出力
' Console.WriteLine(uploadTarget)
Next
Next
' メモリ開放
wc.Dispose()
MessageBox.Show("処理が終了しました")
End Sub
Private Sub MkDir(ByVal path As String)
Dim ftpReq As System.Net.FtpWebRequest = Nothing
Dim ftpRes As System.Net.FtpWebResponse = Nothing
Try
ftpReq = CType(System.Net.WebRequest.Create(path), System.Net.FtpWebRequest)
'ログインユーザー名とパスワードを設定
ftpReq.Credentials = New System.Net.NetworkCredential("user", "xxxxxxxx")
' ディレクトリ作成コマンド
ftpReq.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory
ftpReq.KeepAlive = False
' 実行
ftpRes = CType(ftpReq.GetResponse(), System.Net.FtpWebResponse)
' デバッグ用の標準出力
' Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription)
' 閉じる
ftpRes.Close()
Catch ex As Exception
End Try
End Sub
End Class
