Fileupload应用程序不能用作jar

时间:2019-01-07 14:49:44

标签: java spring-boot

Spring启动应用程序。用户选择自己选择的服务器,然后选择本地系统上的文件,该文件将SFTP发送到该服务器。

通过以下方式起作用:输入流,将文件读取到根项目中的文件夹中。 sftp方法需要文件路径才能起作用。由于无法在用户系统上获取文件的文件路径,而无法获取文件,因此我将其放在本地,然后从那里提供路径。

当从intellij运行我的项目时,这完美地工作,而打包成jar时则不是那么完美。

经过一番阅读之后,将文件放入罐子似乎不太好。现在有什么想法吗?谢谢

public void SFTP(MultipartFile file, String friendlyName, String filePath) throws Exception {
    String host = "10.3.152.245"; //host:IP
    String user = "cloud";
    String password = "Password1";
    System.out.println("File path: " + filePath);
    try {
        String fileName = renameLocal(file);
        java.util.Properties config = new java.util.Properties();
        JSch jsch = new JSch();
        Session session = jsch.getSession(user, host, 22);
        session.setPassword(password);

        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);

        session.connect();

        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();

        sftpChannel.cd("/");
        sftpChannel.cd(filePath);

        sftpChannel.put("\\upload-dir\\" + fileName, ".");
        sftpChannel.rename(filePath + "/" + fileName, filePath + "/" + file.getOriginalFilename());

        session.disconnect();
        sftpChannel.disconnect();

        Path path = FileSystems.getDefault().getPath(".\\upload-dir\\" + fileName);
        Files.delete(path);
    }catch (Exception e){
        throw new Exception();
    }
}

上面的方法是用户上传文件时调用的SFTP方法。静态主机用户并暂时通过。如您所见,我将文件放在本地(方法不在这里)在upload-dir中。然后向sftpChannel.put方法提供upload-dir \ filename

0 个答案:

没有答案