Как скачать файл через SftpRemoteFileTemplate с конечной точки - PullRequest
1 голос
/ 28 мая 2020

У меня есть файловый контроллер, как показано ниже;

@RestController
@RequestMapping("/files")
@RequiredArgsConstructor
public class FileController {

     private final SftpRemoteFileTemplate sftpRemoteFileTemplate;

    @PostMapping("/generate/{exportId}")
    public void generate(@PathVariable("exportId") String exportId) {
        File csvFile = createCsvFile(System.getProperty(JAVA_IO_TMPDIR));
        CsvUtils.write(csvFile, prepareExports(exportId));
        Message<File> message = MessageBuilder.withPayload(file).build();
        String path = remoteFileTemplate.send(message, FileExistsMode.REPLACE);
        //store path to download after etc...
    }


    @GetMapping("/download/{filePath}")
    public ResponseEntity<Resource> download(@PathVariable("filePath") String filePath) {
        //I didn't imagine how can i use it to download response?
        sftpRemoteFileTemplate.get(filePath, stream -> {

        });
    }    
}

я могу загрузить файл на свой SFTP-сервер, используя; remoteFileTemplate.send (message, FileExistsMode.REPLACE)

Но я не мог представить, как его загрузить методом sftpRemoteFileTemplate.get .

для этого требуется InputStreamCallback , как я могу использовать его для ответа на загрузку?

1 Ответ

0 голосов
/ 28 мая 2020

Просто создайте FileOutputStream и скопируйте в него данные из входного потока. например,

FileCopyUtils.copy(stream, new FileOutputStream(new File("local/path"));

...