我可以使用FtpWebRequest使用以下代码成功上传文件。
但是,如果我上传了如下所示的3个文件,则我希望在一个请求中执行此操作,而无需每次都传递用户名和密码。因为我认为如果我理解正确,我现在会向服务器打开3个请求?
如果是这样。连接如何始终保持打开状态?重要的是,如果需要再次输入用户名和密码来打开新请求,如何在执行请求之前检查连接是否打开?
我知道下一行与此有关,但是我不知道如何完全正确地设置上述方案:
request.KeepAlive = true;
完整代码:
void uploadFilesToFTP()
{
List<String> fileLIST = new List<String>();
fileLIST.Add("C:/ESD/test0.txt");
fileLIST.Add("C:/ESD/test1.txt");
fileLIST.Add("C:/ESD/test2.txt");
for (int i = 0; i < fileLIST.Count; i++)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://someurl.net/folder1/test" + i.ToString() + ".txt");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.EnableSsl = false;
request.Credentials = new NetworkCredential("username", "password");
request.KeepAlive = true;
//Read the file's contents into a byte array.
if (File.Exists(fileLIST[i]))
{
//Write the bytes into the request stream.
byte[] bytes = System.IO.File.ReadAllBytes(fileLIST[i]);
request.ContentLength = bytes.Length;
using (Stream request_stream = request.GetRequestStream())
{
request_stream.Write(bytes, 0, bytes.Length);
request_stream.Close();
}
}
}
}