FTP(文件傳輸協議)和SFTP(安全文件傳輸協議)是兩種常見的文件上傳協議,Java提供了豐富的API來支持這兩種協議的文件上傳操作。
以下是使用Java實現FTP文件上傳的示例代碼:
import org.apache.commons.net.ftp.FTPClient; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class FtpUploader { public void upload(String server, int port, String username, String password, String filePath, String remotePath) { FTPClient ftpClient = new FTPClient(); FileInputStream inputStream = null; try { ftpClient.connect(server, port); ftpClient.login(username, password); ftpClient.enterLocalPassiveMode(); inputStream = new FileInputStream(new File(filePath)); ftpClient.storeFile(remotePath, inputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } }
以上代碼中,先創建一個FTPClient對象,然后連接到FTP服務器、登錄并切換到被動模式,接著從本地讀取待上傳的文件,最后使用storeFile()方法將文件上傳到FTP服務器指定的遠程目錄下。
下面是使用Java實現SFTP文件上傳的示例代碼:
import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class SftpUploader { public void upload(String server, int port, String username, String password, String filePath, String remotePath) { JSch jsch = new JSch(); Session session = null; ChannelSftp channel = null; FileInputStream inputStream = null; try { session = jsch.getSession(username, server, port); session.setPassword(password); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.connect(); channel = (ChannelSftp) session.openChannel("sftp"); channel.connect(); inputStream = new FileInputStream(new File(filePath)); channel.put(inputStream, remotePath); } catch (Exception e) { e.printStackTrace(); } finally { try { if (inputStream != null) { inputStream.close(); } channel.disconnect(); session.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } }
以上代碼中,使用JSch庫實現與SFTP服務器的連接,連接成功后打開ChannelSftp通道并將待上傳的文件put到指定的遠程目錄下。