【发布时间】:2013-12-02 08:06:19
【问题描述】:
我正在使用以下方法将文件从本地服务器上传到 FTP 服务器,这里我正在创建一个新连接并启动一个新会话,每个文件上传和关闭都相同。如何在 C# 中的单个启动会话中实现这一点。
这是我的代码
public bool UploadTempFilesToFTP()
{
string[] fileList;
try
{
ConfiguredValues conObj = new ConfiguredValues();
conObj.PickTheValuesFromConfigFile();
fileList = Directory.GetFiles(conObj.tempPath);
foreach (string FileName in fileList)
{
FtpWebRequest upldrequest = (FtpWebRequest)FtpWebRequest.Create(conObj.tempOutboundURL + FileName);
upldrequest.UseBinary = true;
upldrequest.KeepAlive = false;
upldrequest.Timeout = -1;
upldrequest.UsePassive = true;
upldrequest.Credentials = new NetworkCredential(conObj.user, conObj.pass);
upldrequest.Method = WebRequestMethods.Ftp.UploadFile;
string destinationAddress = conObj.tempPath;
FileStream fs = File.OpenRead(destinationAddress + FileName);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream requestStr = upldrequest.GetRequestStream();
requestStr.Write(buffer, 0, buffer.Length);
requestStr.Close();
requestStr.Flush();
FtpWebResponse response = (FtpWebResponse)upldrequest.GetResponse();
response.Close();
File.Delete(destinationAddress + FileName);
}
Console.WriteLine("Uploaded Successfully to Temp folder");
return true;
}
catch (Exception ex)
{
Console.WriteLine("Upload failed. {0}", ex.Message);
return false;
}
}
【问题讨论】:
-
FTP 连接打开和关闭之间的时间。
-
找一些第三方 FTP 客户端来完成这项工作。
-
@user3028959 你没有打开连接,你正在做一个请求。它就是这样工作的。 1 个请求 1 个文件
-
好吧,顺其自然。如何在一个请求中上传多个文件。 ?