如果我使用System.Net.FtpWebRequest将文件上传到vsftpd服务器,是否需要使用GetResponse来检查文件是否正确上传?还是每个错误都会得到一个异常(exception)?我应该检查System.Net.FtpWebResponse中的哪些内容?

最佳答案

是的,您想从请求对象中获取FTPWebResponse对象...像这样:

 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
 request.Method = WebRequestMethods.Ftp.UploadFile;

 FtpWebResponse response = (FtpWebResponse) request.GetResponse();
 request.KeepAlive = false;

 byte[] fileraw = File.ReadAllBytes("CompleteLocalPath");

 try
 {
     Stream reqStream = request.GetRequestStream();

     reqStream.Write(fileraw, 0, fileraw.Length);
     reqStream.Close();
 }
 catch (Exception e)
 {
     response = (FtpWebResponse) request.GetResponse();
     // Do something with response.StatusCode
     response.Close();
 }

您将要检查Ftp.WebResponse.StatusCode。

可以返回StatusCode中的很多成员,因此对其进行检查可能很棘手。

以下是可能返回的代码/说明的列表:

FtpStatusCode

编辑:如果传输出现问题,则在启动流编写器时应引发异常。您所能做的就是围绕所有内容进行 try catch ,如果出现问题,您将能够获取状态代码并将其打印到您正在使用的任何日志介质中,从而可以了解具体的问题。我已经修改了上面的代码以反射(reflect)所有这一切(仅使用一种传输方式,您可以使用自己的方式)。

09-25 18:30