FTP服务器上的文件上传无效

时间:2014-07-22 12:53:15

标签: c# ftp

我正在尝试将文件上传到我的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);
    }

请看这个截图:“是一个目录”是什么意思?

SCREENSHOT

错误很明显:问题已解决。

1 个答案:

答案 0 :(得分:1)

您应该调用GetResponse()方法来实际发送ftp请求。您只准备了在您的代码中发送的请求。

引用MSDN,

  

GetResponse导致建立控制连接,并且还可能创建数据连接。 GetResponse会阻止,直到收到响应。为了防止这种情况,您可以通过调用BeginGetResponse和EndGetResponse方法来代替GetResponse来异步执行此操作。

因此,在写完文件内容后,请致电

ftp.GetResponse()