使用 java 将图像保存到 SFTP 服务器
Save images to SFTP server using java
public static void main(String[] args) {
String SFTPHOST = "10.20.30.40";
int SFTPPORT = 22;
String SFTPUSER = "username";
String SFTPPASS = "password";
String SFTPWORKINGDIR = "/export/home/kodehelp/";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try{
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(SFTPWORKINGDIR);
URL url = new URL("https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg");
BufferedImage image = null;
image = ImageIO.read(url);
**File f = new File(FILETOTRANSFER);
channelSftp.put(new FileInputStream(f), f.getName());**
}catch(Exception ex){
ex.printStackTrace();
}
}
我不知道,如何将图像存储到 SFTP 服务器。我对写什么而不是这两行感到困惑
File f = new File(FILETOTRANSFER);
channelSftp.put(new FileInputStream(f), f.getName());
我正在使用 JSCH 库连接 SFTP
问题是您正在将图像加载到 BufferedImage
,但这不是您可以直接写入 SFTP 服务器的表示。
直接在 URL 上打开 InputStream 并将其保存到 SFTP 服务器要容易得多。 (使用 url.openStream()
)
然后您需要想出一个合适的文件名 - 这里我在最后一个斜杠后取 URL 的最后一部分,这与您在代码中所做的效果相同。
URL url = new URL(
"https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg");
String path = url.getPath();
channelSftp.put(url.openStream(),path.substring(path.lastIndexOf('/')+1));
public static void main(String[] args) {
String SFTPHOST = "10.20.30.40";
int SFTPPORT = 22;
String SFTPUSER = "username";
String SFTPPASS = "password";
String SFTPWORKINGDIR = "/export/home/kodehelp/";
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
try{
JSch jsch = new JSch();
session = jsch.getSession(SFTPUSER,SFTPHOST,SFTPPORT);
session.setPassword(SFTPPASS);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd(SFTPWORKINGDIR);
URL url = new URL("https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg");
BufferedImage image = null;
image = ImageIO.read(url);
**File f = new File(FILETOTRANSFER);
channelSftp.put(new FileInputStream(f), f.getName());**
}catch(Exception ex){
ex.printStackTrace();
}
}
我不知道,如何将图像存储到 SFTP 服务器。我对写什么而不是这两行感到困惑
File f = new File(FILETOTRANSFER);
channelSftp.put(new FileInputStream(f), f.getName());
我正在使用 JSCH 库连接 SFTP
问题是您正在将图像加载到 BufferedImage
,但这不是您可以直接写入 SFTP 服务器的表示。
直接在 URL 上打开 InputStream 并将其保存到 SFTP 服务器要容易得多。 (使用 url.openStream()
)
然后您需要想出一个合适的文件名 - 这里我在最后一个斜杠后取 URL 的最后一部分,这与您在代码中所做的效果相同。
URL url = new URL(
"https://65.media.tumblr.com/839a07990f2b1ffa32065513c6224493/tumblr_oe6t3aYpHc1qfilt7o1_500.jpg");
String path = url.getPath();
channelSftp.put(url.openStream(),path.substring(path.lastIndexOf('/')+1));