ftp 서버에서 파일을 다운로드하기 전에 존재하지 않거나 없으면 확인하고 싶다면 mu st 예외가 발생했는지 확인하고 싶습니다. 코드 샘플은 파일이 없을 때 작동합니다. 그러나 파일이 존재하면 행을 실행 한 후; "ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;" 두 번째 catch 블록을 건너 뛰고 "오류 : 요청을 제출하면이 작업을 수행 할 수 없습니다."라는 메시지가 인쇄됩니다. 내가 볼 수없는 요점은 뭐야 .. 대답 해줘서 고마워.파일을 다운로드하기 전에 FTP 서버에 파일이 있는지 여부를 확인하십시오.
public void fileDownload(string fileName)
{
stream = new FileStream(filePath + fileName, FileMode.Create);
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));
ftpRequest.Credentials = new NetworkCredential(userName, password);
ftpRequest.Method = WebRequestMethods.Ftp.GetFileSize;
try
{
response = (FtpWebResponse)ftpRequest.GetResponse();
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpRequest.UseBinary = true;
response = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = response.GetResponseStream();
cl = response.ContentLength;
bufferSize = 2048;
buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
stream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
stream.Close();
response.Close();
Console.WriteLine("File : " + fileName + " is downloaded from ftp server");
}
catch (WebException ex)
{
FtpWebResponse res = (FtpWebResponse)ex.Response;
if (res.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
{
stream.Close();
File.Delete(filePath + fileName);
Console.WriteLine("File : " + fileName + " does not exists on ftp server");
System.Diagnostics.Debug.WriteLine("Error: " + fileName + " is not available on fpt server");
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine("Error: " + ex.Message);
}
}
네, 맞습니다. 같은 줄을 반복하지 않기 위해 fileExist() 메서드를 작성하여 처리했습니다. 그리고 그것은 응답을위한 덕분에 – anarhikos
나는 동일한 오류가 : "이 작업은 요청이 제출 된 후에 수행 할 수 없습니다." 파일을 다운로드하고 같은 요청 개체를 다시 사용하여 다른 파일을 업로드하려고했습니다. 분리 된 요청 객체로 그들을 속이는 것이 트릭을 만들었습니다. 감사. – MikeTeeVee