我正在尝试将文件上传到我的ftp服务器。不幸的是,上传方法似乎有效但不上传我选择的文件。请看下面的代码:
public void UploadFileToFTP(string source)
{
try
{
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://xxx.bplaced.net/Test");
ftp.Credentials = new NetworkCredential("BN", "PW");
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(source);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
MessageBox.Show("Upload successful!");
}
catch (Exception ex)
{
throw ex;
}
}
public void button_Upload_Click(object sender, RoutedEventArgs e)
{
string sourcefilepath = @"C:\Users\MyPC\Desktop\Test\Texts\New.html";
UploadFileToFTP(sourcefilepath);
}
请看这个截图:“是一个目录”是什么意思?
错误很明显:问题已解决。
答案 0 :(得分:1)
您应该调用GetResponse()方法来实际发送ftp请求。您只准备了在您的代码中发送的请求。
引用MSDN,
GetResponse导致建立控制连接,并且还可能创建数据连接。 GetResponse会阻止,直到收到响应。为了防止这种情况,您可以通过调用BeginGetResponse和EndGetResponse方法来代替GetResponse来异步执行此操作。
因此,在写完文件内容后,请致电
ftp.GetResponse()