2014-09-24 3 views
2

SharpSSH를 사용하여 로컬 디렉토리에서 SFTP로 zip 파일을 업로드하고 있습니다. 모든 것이 잘 작동합니다. 그러나 방금 업로드 한 현재 파일의 파일 크기를 얻고 싶습니다. 내가이 일을하는 이유는 압축 파일이 (45GB에서 80GB로) 크기 때문에 업로드하는 동안 실패하거나 멈추지 않았는지 확인하기 위해서입니다. 전체 우편 번호가 업로드되었는지 확인하고 싶습니다.SharpSSH를 사용하여 SFTP에서 파일 크기 가져 오기

나는 다음과 같이 로컬 zip 파일의 파일 크기를 얻을 수 있습니다 :

DirectoryInfo di = new DirectoryInfo(yesterdaysArchiveFolder); 
FileInfo[] files = di.GetFiles(); 

foreach (FileInfo f in files) 
{ 
    Console.WriteLine("Size of the zip file: " + f.Length); 
} 

지금, 내가 업로드가 완료되면 그냥 SFTP에 업로드 한 파일에 대해 동일한 작업을 수행하려고 할 수 있습니다.

방금 ​​업로드 한 파일의 이름을 알고 있으므로 ArrayList을 만들고 SFTP에서 파일을 가져옵니다. 그런 다음 for loop을 사용하여 방금 업로드 한 파일을 가져옵니다.

ArrayList FileList = oSftp.GetFileList(_ftpDirectory); 
int count = FileList.Count; 
Console.WriteLine("Files in SFTP: " + count); 

for (int i = 0; i < FileList.Count; i++) 
{ 
    if (zipFileName == FileList[i].ToString()) 
    { 
     Console.WriteLine(FileList[i]);   
    } 
} 

문제는 해당 파일의 파일 크기를 얻을 수 .Length 같은 어떤 특성이있어 없다는 것입니다?

원격 서버에있는 파일의 파일 크기를 알아낼 수있는 다른 방법이 있습니까?

+0

당신이 SSH 연결이, 나는 당신이 원격 서버에'ls' 같은 명령을 실행할 수 있다고 생각합니다. 다음과 같은 예가 있습니다. (조금 다른 점이 있습니다) : [추가 입력을 요구하는 Linux 명령을 실행하는 데 SharpSSH를 사용하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/9857788/how-to-use- sharpssh-for-executing-linux-commands-which-prompts-for-additonal-inp)를 사용하십시오. –

답변

2

SharpSSH는 허용하지 않습니다. SharpSSH는 오픈 소스이므로 코드를 작성할 수 있습니다.

또 다른 샤프 SHSSH 질문 Download file based on date modified from SFTP에 대한 대답을 참조하십시오.

  • SSH.NET이 방법 SftpClient.ListDirectoryIEnumerable<SftpFile> 반환이 있습니다


    비록 SharpSSH 죽은 프로젝트, 당신은 다른 SFTP 라이브러리를 사용합니다. SftpFile에는 .Length 속성이 있습니다.

  • WinSCP .NET assembly합니다 (RemoteDirectoryInfo.Files 통해) 복귀 방법 Session.ListDirectory 속성 .LengthRemoteFileInfo의 컬렉션을 가진다.
    (내가 WinSCP에 .NET 어셈블리의 저자 해요)

+1

라이브러리를 전환 할 수밖에 없었으므로 이것을 aswer로 받아 들일 것입니다. 나는 [Kellerman Software] (http://www.kellermansoftware.com/p-41-net-sftp-library.aspx?mode=Specifications&)와 함께 갔다. 고맙습니다. – smr5

관련 문제