110,534
社区成员
发帖
与我相关
我的任务
分享
public static bool UploadFtpFile(string BaseUriStr, string AimUriStr, string UserName, string UserPwd, string SrcFilePath)
{
Uri BaseUri = new Uri(BaseUriStr);
Uri AimUri = new Uri(BaseUri, AimUriStr);
FtpWebRequest FtpRequest = (FtpWebRequest)WebRequest.Create(AimUri);
//FtpRequest.KeepAlive = true;
FtpRequest.KeepAlive = false;
FtpRequest.ReadWriteTimeout = 10000;
FtpRequest.UsePassive = false;
FtpRequest.Proxy = null;
FtpRequest.CachePolicy = new System.Net.Cache.RequestCachePolicy();
NetworkCredential FtpCred = new NetworkCredential(UserName, UserPwd);
CredentialCache FtpCache = new CredentialCache();
FtpCache.Add(AimUri, AuthType.Basic.ToString(), FtpCred);
FtpRequest.Credentials = FtpCache;
FtpRequest.Method = WebRequestMethods.Ftp.UploadFile;
try
{
Stream stm = FtpRequest.GetRequestStream();
byte[] RequestByteArray = File.ReadAllBytes(SrcFilePath);
stm.Write(RequestByteArray, 0, RequestByteArray.Length);
stm.Close();
FtpWebResponse FtpResponse = (FtpWebResponse)FtpRequest.GetResponse();
if (FtpResponse.StatusCode == FtpStatusCode.ClosingData)
{
FtpResponse.Close();
FileInfo FI = new FileInfo(SrcFilePath);
if (GetFtpFileSize(BaseUriStr, AimUriStr, UserName, UserPwd) == FI.Length)
{
return true;
}
else
{
return false;
}
}
else
{
FtpResponse.Close();
return false;
}
}
catch (WebException e)
{
FtpWebResponse FtpResponse = (FtpWebResponse)e.Response;
FtpResponse.Close();
return false;
}
}
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential("asd", "123");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("testfile.txt");
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();