複数のファイルを ftp サーバーにアップロードする必要があります。Webrequest を使用して各ファイルを一度に送信しようとしました。問題は、ファイルを送信するたびに資格情報を追加する必要があることです。これは、新しいセッションを開くことを意味します。私は別のアプローチを試みましたが、私の最新のものではうまくいきませんでした。優雅にそれを行う方法を知っている人はいますか? ファイルを送信するたびに接続せずに、1 つの FTPWeb リクエストを使用して一度に多くのファイルを送信する必要があります。誰でも私を助けてくれますか?
private void envoiFTP(string table)
{
string path = @"D:\Temp\";
string[] files = Directory.GetFiles(path,@"*.xml");
if (files != null)
{
foreach (string file in files)
{
fi = new FileInfo(file);
string fileName = fi.Name;
string fileurl = path + @"/" + fileName;
string ftpFile = FtpServer + @"/" + fileName;
FtpWebRequest myRequest = (FtpWebRequest)FtpWebRequest.Create(ftpFile);
myRequest.Credentials = new NetworkCredential(FtpUser, FtpPassword);
myRequest.Method = WebRequestMethods.Ftp.UploadFile;
myRequest.Timeout = 1000000;
myRequest.UseBinary = true;
myRequest.KeepAlive = true;
myRequest.ContentLength = fi.Length;
byte[] buffer = new byte[4097];
int bytes = 0;
int total_bytes = (int)fi.Length;
System.IO.FileStream fs = fi.OpenRead();
System.IO.Stream rs = myRequest.GetRequestStream();
while (total_bytes > 0)
{
bytes = fs.Read(buffer, 0, buffer.Length);
rs.Write(buffer, 0, bytes);
total_bytes = total_bytes - bytes;
}
fs.Close();
rs.Close();
FtpWebResponse uploadResponse = (FtpWebResponse)myRequest.GetResponse();
uploadResponse.Close();
}
}
}
}
}