如何使用c#.net将许多文本文件从本地计算机上载到ftp?
我需要使用c#将文本文件从本地计算机上载到ftp服务器。 我尝试了下面的代码,但没有成功如何使用c#.net将许多文本文件从本地计算机上载到ftp?,c#,ftp,C#,Ftp,我需要使用c#将文本文件从本地计算机上载到ftp服务器。 我尝试了下面的代码,但没有成功 private bool UploadFile(FileInfo fileInfo) { FtpWebRequest request = null; try { string ftpPath = "ftp://www.tt.com/" + fileInfo.Name request = (FtpWebRequest)WebRequest.Create
private bool UploadFile(FileInfo fileInfo)
{
FtpWebRequest request = null;
try
{
string ftpPath = "ftp://www.tt.com/" + fileInfo.Name
request = (FtpWebRequest)WebRequest.Create(ftpPath);
request.Credentials = new NetworkCredential("ftptest", "ftptest");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.KeepAlive = false;
request.Timeout = 60000; // 1 minute time out
request.ServicePoint.ConnectionLimit = 15;
byte[] buffer = new byte[1024];
using (FileStream fs = new FileStream(fileInfo.FullPath, FileMode.Open))
{
int dataLength = (int)fs.Length;
int bytesRead = 0;
int bytesDownloaded = 0;
using (Stream requestStream = request.GetRequestStream())
{
while (bytesRead < dataLength)
{
bytesDownloaded = fs.Read(buffer, 0, buffer.Length);
bytesRead = bytesRead + bytesDownloaded;
requestStream.Write(buffer, 0, bytesDownloaded);
}
requestStream.Close();
}
}
return true;
}
catch (Exception ex)
{
throw ex;
}
finally
{
request = null;
}
return false;
}// UploadFile
private bool上传文件(FileInfo FileInfo)
{
FtpWebRequest请求=null;
尝试
{
字符串ftpPath=”ftp://www.tt.com/“+fileInfo.Name
request=(FtpWebRequest)WebRequest.Create(ftpPath);
request.Credentials=新的网络凭据(“ftptest”、“ftptest”);
request.Method=WebRequestMethods.Ftp.UploadFile;
request.KeepAlive=false;
request.Timeout=60000;//超时1分钟
request.ServicePoint.ConnectionLimit=15;
字节[]缓冲区=新字节[1024];
使用(FileStream fs=newfilestream(fileInfo.FullPath,FileMode.Open))
{
int dataLength=(int)fs.Length;
int字节读取=0;
int字节=0;
使用(Stream requestStream=request.GetRequestStream())
{
while(字节读取<数据长度)
{
bytesDownloaded=fs.Read(buffer,0,buffer.Length);
字节读=字节读+字节下载;
Write(缓冲区,0,字节下载);
}
requestStream.Close();
}
}
返回true;
}
捕获(例外情况除外)
{
掷骰子;
}
最后
{
请求=null;
}
返回false;
}//上传文件
有什么建议吗?您需要通过调用
GetResponse()
实际发送请求
您还可以通过调用
fs.CopyTo(requestStream)
使代码更简单。我修改了一些ftp代码,得到了以下代码,这对我来说似乎非常有效
ftpUploadloc是一个
ftpUsername和ftpPassword应该是不言自明的
最后,currentLog是您正在上载的文件的位置
让我知道这对你来说是如何实现的,如果其他人有任何其他建议,我欢迎这些建议
private void ftplogdump()
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUploadloc);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
StreamReader sourceStream = new StreamReader(currentLog);
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();
// Remove before publishing
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
}
它怎么不起作用?它爆炸了吗?您的
try
块完全无用,并且会破坏异常堆栈跟踪。