ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文
【VB.NET】FTP 一括アップロード ( No.0 )
日時: 2008/05/08 20:21
名前: lightbox



FTP_UPLOAD.exe
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
FTP_UPLOAD.exe.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.Net" switchName="NetSwitch"
              maxdatasize="10240" tracemode="protocolonly">
        <listeners>
          <remove name="Default"/>
          <add name="TextLog"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="NetSwitch" value="Verbose"/>
    </switches>
    <sharedListeners>
      <add name="TextLog"
        type="System.Diagnostics.TextWriterTraceListener"
        initializeData="C:\System_Net.log" />
    </sharedListeners>
  </system.diagnostics>
</configuration>