MultipartFile结合sftp上传文件
时间: 2023-12-09 14:36:49 浏览: 89
利用MultipartFile实现文件上传功能
5星 · 资源好评率100%
以下是利用MultipartFile结合sftp上传文件的示例代码:
```java
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.Properties;
public class SftpUtil {
private static String host;
private static int port;
private static String username;
private static String password;
private static int timeout;
static {
try {
Properties props = new Properties();
InputStream in = SftpUtil.class.getClassLoader().getResourceAsStream("application.yml");
props.load(in);
host = props.getProperty("sftp.oa.hostname");
port = Integer.parseInt(props.getProperty("sftp.oa.port"));
username = props.getProperty("sftp.oa.username");
password = props.getProperty("sftp.oa.password");
timeout = Integer.parseInt(props.getProperty("sftp.oa.timeout"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void uploadFile(MultipartFile file, String remotePath) {
ChannelSftp sftp = null;
Session sshSession = null;
try {
JSch jsch = new JSch();
sshSession = jsch.getSession(username, host, port);
sshSession.setPassword(password);
sshSession.setConfig("StrictHostKeyChecking", "no");
sshSession.connect(timeout);
sftp = (ChannelSftp) sshSession.openChannel("sftp");
sftp.connect();
sftp.cd(remotePath);
sftp.put(file.getInputStream(), file.getOriginalFilename());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sftp != null) {
sftp.disconnect();
}
if (sshSession != null) {
sshSession.disconnect();
}
}
}
}
```
其中,`MultipartFile`是Spring框架中用于处理文件上传的类,`ChannelSftp`是JSch库中用于操作SFTP协议的类。在`uploadFile`方法中,我们首先通过JSch库建立SFTP连接,然后将文件上传到指定的远程路径中。
阅读全文