如果我使用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)所有这一切(仅使用一种传输方式,您可以使用自己的方式)。