2017-11-20 26 views
0

업로드 할 파일이 있습니다 (예 : abc.pdf). 처음으로이 파일을 임시 파일 (예 : abc.pdf.temp)로 업로드하고 싶습니다. 그런 다음 파일이 성공적으로 전송 된 경우 (완전히 전송 된 경우) 원본 이름 (abc.pdf)으로 이름을 바꿔야합니다. 그러나 파일이 완전히 전송되지 않은 경우 서버에 손상된 파일을 보관하고 싶지 않기 때문에 처음에 업로드 한 임시 파일을 삭제해야합니다. 이 JSch 라이브러리를 사용하여 달성 할 수 있습니까? 아래는 샘플 코드입니다. 이것을 달성하는 데이 코드가 의미가 있습니까?JSch 라이브러리를 사용하여 업로드 재시도 메커니즘

샘플 코드 :

originalFile = 'abc.pdf'; 
tempFile = 'abc.pdf.temp'; 
fileInputStream = createobject("java", "java.io.FileInputStream").init('C:\abc.pdf'); 
SftpChannel.put(fileInputStream,tempFile); 

// Comparing remote file size with local file 
if(SftpChannel.lstat(tempFile).getSize() NEQ localFileSize){ 
    // Allow to Resume the file transfer since the file size is different 
    SftpChannel.put(fileInputStream,tempFile,SftpChannel.RESUME); 
    if(SftpChannel.lstat(tempFile).getSize() NEQ localFileSize){ 
     // Check again if the file is not fully transferred (During RESUME) then 
     // deleting the file since dont want to keep a corrupted file in the server. 
     SftpChannel.rm(tempFile); 
    } 
}else{//assuming file is fully transferred 
    SftpChannel.rename(tempFile ,originalFile); 
} 
+0

이것은 코드 작성 서비스가 아닙니다. 이 문제를 구현할 때 특히 어떤 문제가 있습니까? 너는 무엇을 이미 시도 했는가? 코드를 보여주세요. –

+0

이 정보를 얻기 위해 superuser.com을 사용할 수 있습니까? – user3742125

+0

나는 이해하지 못한다. 프로그래밍 질문이 있습니다. 그래서 여기 물어봐야합니다. 그러나이 사이트의 범위를 묻는 질문을해야합니다. 여기에는 현재 코드와 특정 문제가 포함되어야합니다. 당신은 특정한 문제를 묻지 않았습니다. 당신은 우리에게 당신을 위해 당신의 일을하라고 요구하고 있습니다. –

답변

0
  1. 그것은 던지는없이 put이 완료된 후, 파일 크기가 일치하지 않습니다 매우 확률이 낮다. 그것은 거의 일어나지 않을 수 있습니다. 문제가 발생하더라도 RESUME으로 전화하는 것은 거의 의미가 없습니다. put에 의해 감지되지 않는 큰 재앙이 발생하는 경우 RESUME은 도움이되지 않습니다.

    RESUME으로 시도하려는 경우에도 한번 시도하는 것은 의미가 없습니다. 다시 시도하는 것이 합리적이라고 생각되면 성공할 때까지 한 번만 시도하지 말고 다시 시도해야합니다.

  2. 예외를 catch하고 다시 시작하거나 삭제해야합니다. 이것이 기본 복구 메커니즘입니다. 이것은 1보다 1 만 배 더 많이 발생합니다.

+0

catch 예외에서 RESUME을 사용하려면 파일이 있어야합니다. check..right ??. 어떻게 내가이 원격 파일이 존재 check ...using "나는"방법을 할 수 있습니까 ?? 또는 다른 방법으로 ?? – user3742125

+0

수표를 작성할 필요가 없습니다. 이미 말했듯이,'RESUME'은 스스로 점검합니다. 그러나 원할 경우'lstat' 또는'stat'를 사용하여 검사 할 수 있습니다. https://stackoverflow.com/q/11968878/850848 –

+0

lstat 또는 stat 파일 존재 확인에 사용되지 않습니다 .. 그냥 "ls"입니다 .. 오른쪽 ?? 또는 lstat 또는 stat을 사용하여 파일 존재를 찾을 수있는 방법이 있습니까? – user3742125