如何在我自己的 PC 上连接到本地 FileZilla FTP 服务器进行测试?
How can I connect on my own PC to a local FileZilla FTP server for testings?
我下载并安装了 FileZilla Server。
然后我在FileZilla中使用地址:127.0.0.1 端口:14147 和管理员用户名:admin
并且连接正常。
但是现在想用C#连接服务器上传下载删除文件
这是我的代码。当我在 ipage.com
使用我的在线 FTP 服务器时,这段代码工作正常
但现在我想将它与 FileZilla 一起使用。
string fff = "";
public string[] GetFileList()
{
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
try
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + f.Host + "/"));
fff = "ftp://" + f.Host + "/";
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(f.Username, f.Password);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Proxy = null;
reqFTP.KeepAlive = false;
reqFTP.UsePassive = false;
response = reqFTP.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
}
catch (Exception ex)
{
if (reader != null)
{
reader.Close();
}
if (response != null)
{
response.Close();
}
downloadFiles = null;
return downloadFiles;
}
}
在 fff
中我看到 ftp://127.0.0.1/
并且 f.Username
是空的 ""
并且 f.Password
是 admin
然后我继续并出现异常:
The remote server returned an error: (501) Syntax error in parameters or arguments
System.Net.WebException was caught
HResult=-2146233079
Message=The remote server returned an error: (501) Syntax error in parameters or arguments.
Source=System
StackTrace:
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.IO.Stream.Close()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetResponse()
at FTP_ProgressBar.FtpProgress.GetFileList() in c:\ftp_progressbar\FTP_ProgressBar\FtpProgress.cs:line 342
InnerException:
第 342 行是:
response = reqFTP.GetResponse();
我想要演示 FTP 服务器,这样我就可以在上面检查我的 C# 程序。
由于 USER
命令中缺少用户名,501
可能是由 FileZilla 服务器发送的。如果不提供用户名,您将无法登录 FTP 服务器。
您必须使用 FTP 帐户登录服务器。您无法使用管理密码登录。
在 FileZilla Server 界面中,转到菜单 编辑 > 用户,创建一个 FTP 用户,然后在您的代码中使用它 username/password。
我下载并安装了 FileZilla Server。
然后我在FileZilla中使用地址:127.0.0.1 端口:14147 和管理员用户名:admin
并且连接正常。
但是现在想用C#连接服务器上传下载删除文件
这是我的代码。当我在 ipage.com
使用我的在线 FTP 服务器时,这段代码工作正常但现在我想将它与 FileZilla 一起使用。
string fff = "";
public string[] GetFileList()
{
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
try
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + f.Host + "/"));
fff = "ftp://" + f.Host + "/";
reqFTP.UseBinary = true;
reqFTP.Credentials = new NetworkCredential(f.Username, f.Password);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Proxy = null;
reqFTP.KeepAlive = false;
reqFTP.UsePassive = false;
response = reqFTP.GetResponse();
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
}
catch (Exception ex)
{
if (reader != null)
{
reader.Close();
}
if (response != null)
{
response.Close();
}
downloadFiles = null;
return downloadFiles;
}
}
在 fff
中我看到 ftp://127.0.0.1/
并且 f.Username
是空的 ""
并且 f.Password
是 admin
然后我继续并出现异常:
The remote server returned an error: (501) Syntax error in parameters or arguments
System.Net.WebException was caught
HResult=-2146233079
Message=The remote server returned an error: (501) Syntax error in parameters or arguments.
Source=System
StackTrace:
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.IO.Stream.Close()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetResponse()
at FTP_ProgressBar.FtpProgress.GetFileList() in c:\ftp_progressbar\FTP_ProgressBar\FtpProgress.cs:line 342
InnerException:
第 342 行是:
response = reqFTP.GetResponse();
我想要演示 FTP 服务器,这样我就可以在上面检查我的 C# 程序。
由于 USER
命令中缺少用户名,501
可能是由 FileZilla 服务器发送的。如果不提供用户名,您将无法登录 FTP 服务器。
您必须使用 FTP 帐户登录服务器。您无法使用管理密码登录。
在 FileZilla Server 界面中,转到菜单 编辑 > 用户,创建一个 FTP 用户,然后在您的代码中使用它 username/password。