FTPUpload(sample)
FTP Upload
System.Xml の参照設定が必要
settings.xmlの例
<FtpUpClass> <UserName>655123</UserName> <Password>win123</Password> <SourceFolder>C:\tmp</SourceFolder> <LogFolder>C:\LOG</LogFolder> <FtpServer>ftp://192.168.1.1/test</FtpServer> </FtpUpClass>
using System; using System.IO; using System.Net; using System.Threading; using System.Diagnostics; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Xml; using System.Xml.Serialization; public class FtpUpClass { public string UserName; public string Password; public string SourceFolder; public string LogFolder; public string FtpServer; } class Program { static void Main() { XmlSerializer serializer = new XmlSerializer ( typeof ( FtpUpClass )); FileStream fs = new FileStream ( Directory .GetCurrentDirectory() + "\\" + "settings.xml" , FileMode .Open); FtpUpClass settings = ( FtpUpClass )serializer.Deserialize(fs); fs.Close(); string destinationFolder; string uri; string filename; string logFileName; string logDateFolder; Dictionary < string , string > dict = new Dictionary < string , string >(); dict[ @"btest_\d{8}\.zip$" ] = "folder_b" ; dict[ @"dtest_\d{8}\.zip$" ] = "folder_d" ; dict[ @"stest_\d{8}\.zip$" ] = "folder_s" ; dict[ @"ttest_\d{8}\.zip$" ] = "folder_t" ; dict[ @"I123_ptn|num_\d{8}\.zip$" ] = "p_folder" ; logDateFolder = CreateDateFolder(settings.LogFolder); logFileName = Path .Combine(logDateFolder, DateTime .Today.ToString( "yyyyMMdd" ) + "FTP.log" ); DefaultTraceListener drl; drl = ( DefaultTraceListener ) Trace .Listeners[ "Default" ]; drl.LogFileName = logFileName; drl.WriteLine(System. DateTime .Now + " " + " 開始"); try { WebClient wc = new WebClient (); wc.Credentials = new NetworkCredential (settings.UserName,settings.Password); foreach ( string key in dict.Keys){ string [] files = FindFiles(settings.SourceFolder,key,"*.zip",true); foreach ( string file in files) { filename = Path .GetFileName(file); destinationFolder = dict[key]; uri = settings.FtpServer + destinationFolder + "/" + filename; wc.UploadFile(uri, file); drl.WriteLine(System. DateTime .Now + " " + file); } } wc.Dispose(); drl.WriteLine(System. DateTime .Now + " " + " 終了"); } catch (System. Exception ex){ drl.WriteLine(System. DateTime .Now + " " + ex.Message); } } 使用する関数 static string [] FindFiles( string path, string pattern, string wildcard, bool ignorecase) static string CreateDateFolder( string targetFolder)