麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

java使用SFTP上傳文件到資源服務器

2024-07-14 08:43:14
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現SFTP上傳文件到資源服務器工具類,供大家參考,具體內容如下

首先得創建連接sftp服務器的公共類MySftp.java:

package cn.test.util; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Properties;import java.util.Vector; import javax.servlet.http.HttpServletRequest; import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException; public class MySFTP {  /** * 連接sftp服務器 * @param host 主機 * @param port 端口 * @param username 用戶名 * @param password 密碼 */ public ChannelSftp connect(String host, int port, String username,  String password) { ChannelSftp sftp = null; try {  JSch jsch = new JSch();  jsch.getSession(username, host, port);  Session sshSession = jsch.getSession(username, host, port);  sshSession.setPassword(password);  Properties sshConfig = new Properties();  sshConfig.put("StrictHostKeyChecking", "no");  sshSession.setConfig(sshConfig);  sshSession.connect();  Channel channel = sshSession.openChannel("sftp");  channel.connect();  sftp = (ChannelSftp) channel; } catch (Exception e) {   } return sftp; }  /** * 上傳文件 *  * @param directory *      上傳的目錄 * @param uploadFile *      要上傳的文件 * @param sftp */ public void upload(String directory, String uploadFile, ChannelSftp sftp) { try {  sftp.cd(directory);  File file = new File(uploadFile);  sftp.put(new FileInputStream(file), file.getName()); } catch (Exception e) {  e.printStackTrace(); } }  /** * 下載文件 *  * @param directory *      下載目錄 * @param downloadFile *      下載的文件 * @param saveFile *      存在本地的路徑 * @param sftp */ public void download(String directory, String downloadFile,  String saveFile, ChannelSftp sftp) { try {  sftp.cd(directory);  File file = new File(saveFile);  sftp.get(downloadFile, new FileOutputStream(file)); } catch (Exception e) {  e.printStackTrace(); } }  /** * 刪除文件 *  * @param directory *      要刪除文件所在目錄 * @param deleteFile *      要刪除的文件 * @param sftp */ public void delete(String directory, String deleteFile, ChannelSftp sftp) { try {  sftp.cd(directory);  sftp.rm(deleteFile); } catch (Exception e) {  e.printStackTrace(); } }  public void uploadSFTP(HttpServletRequest request,String[] uploadFiles) throws Exception {  MySFTP mySFTP = new MySFTP();  SFTPUtil sFTPUtil =new SFTPUtil();  ChannelSftp sftp = null;  Session session = null; try {  sftp = mySFTP.connect(SystemConstants.SFTP_host, Integer.parseInt(SystemConstants.SFTP_port), SystemConstants.SFTP_username, SystemConstants.SFTP_password);   for (int i = 0; i < uploadFiles.length; i++) {   Date uploadTime = new Date();   String url=request.getSession().getServletContext().getRealPath("").replaceAll("////", "/");    String uploadFile =url.substring(0, url.lastIndexOf("/"))+uploadFiles[i];//   String saveFile="";   SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");   String ymd = sdf.format(uploadTime);   String relativePath = ymd + "/";   String directory = SystemConstants.SFTP_directory+ relativePath;   sFTPUtil.createDir(directory, sftp);   mySFTP.upload(directory, uploadFile, sftp);   sftp.cd(directory);  }    } catch (Exception e) {   e.printStackTrace();  }finally{  try {   if(sftp != null) {   sftp.disconnect();   }  } catch (Exception e) {   e.printStackTrace();  }  try {   if(session != null) {   session.disconnect();   }  } catch (Exception e) {   e.printStackTrace();  }  }  }  /** * 列出目錄下的文件 *  * @param directory *      要列出的目錄 * @param sftp * @return * @throws SftpException */ @SuppressWarnings("rawtypes") public Vector listFiles(String directory, ChannelSftp sftp)  throws SftpException { return sftp.ls(directory); } }

上傳圖片時,調用SFTPUtil類中的uploadMultipartFile方法即可。

package cn.test.util;  import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;  import org.springframework.web.multipart.MultipartFile;  import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpATTRS;import com.jcraft.jsch.SftpException; /**文件上傳工具類*/public class SFTPUtil { /** * spring文件上傳方法 * */ public static String uploadMultipartFile(MultipartFile file,String fileExt) { SFTPUtil sFTPUtil =new SFTPUtil(); String originalFilename = file.getOriginalFilename(); //生成文件名 Date uploadTime = new Date();  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");    String ymd = sdf.format(uploadTime);    String relativePath = ymd+"/"; SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String fileName = df.format(uploadTime) + "_" + new Random().nextInt(1000) + "." + fileExt;// String fileName = String.valueOf(new Date().getTime())+ new Random().nextInt(10000)+"."+originalFilename.substring(originalFilename.lastIndexOf(".") + 1); String directory=SystemConstants.SFTP_directory+relativePath; ChannelSftp sftp =null; Session session = null; try {  MySFTP mySFTP = new MySFTP();  sftp = mySFTP.connect(SystemConstants.SFTP_host, Integer.parseInt(SystemConstants.SFTP_port), SystemConstants.SFTP_username, SystemConstants.SFTP_password);  session = sftp.getSession();  sFTPUtil.createDir(directory, sftp);  sftp.cd(directory);  sftp.put(file.getInputStream(), fileName);  sftp.disconnect();  sftp.getSession().disconnect(); } catch (Exception e) {  System.out.println("文件[" + originalFilename + "]上傳失敗,堆棧軌跡如下:");  e.printStackTrace(); }finally{  try {  if(sftp != null) {   sftp.disconnect();  }  } catch (Exception e) {  e.printStackTrace();  }  try {  if(session != null) {   session.disconnect();  }  } catch (Exception e) {  e.printStackTrace();    }     } String reName=SystemConstants.SFTP_httpBaseUrl+relativePath+fileName; return reName; }   /**  * 創建目錄 * @throws Exception   */ public void createDir(String createpath, ChannelSftp sftp) throws Exception {   try {    if (isDirExist(sftp, createpath)) {    sftp.cd(createpath);    }    String pathArry[] = createpath.split("/");    StringBuffer filePath = new StringBuffer("/");    for (String path : pathArry) {    if (path.equals("")) {     continue;    }    filePath.append(path + "/");    if (isDirExist(sftp, filePath.toString())) {     sftp.cd(filePath.toString());    } else {     // 建立目錄     sftp.mkdir(filePath.toString());     // 進入并設置為當前目錄     sftp.cd(filePath.toString());    }    }    sftp.cd(createpath);   } catch (SftpException e) {   throw new Exception(e.getMessage());  }   }    /**   * 判斷目錄是否存在   */  public boolean isDirExist(ChannelSftp sftp,String directory) {   boolean isDirExistFlag = false;   try {   SftpATTRS sftpATTRS = sftp.lstat(directory);   isDirExistFlag = true;   return sftpATTRS.isDir();   } catch (Exception e) {   if (e.getMessage().toLowerCase().equals("no such file")) {    isDirExistFlag = false;   }   }   return isDirExistFlag;  } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一区二区三区欧美 | www.48xx.com| 好吊色欧美一区二区三区四区 | av在线不卡免费 | 国产精品爱久久久久久久 | 国产成人精品自拍视频 | 欧美一级aa免费毛片 | 久久免费视频一区二区三区 | 欧美一级免费在线观看 | 成人国产精品一区二区毛片在线 | 永久免费毛片 | 九一国产精品 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 一级电影在线观看 | 成人一区二区三区四区 | 99国产精品国产免费观看 | 黄污网站在线观看 | 亚洲午夜一区二区三区 | 成人短视频在线观看免费 | 久久久久久久久久亚洲 | 91精品国产综合久久久动漫日韩 | 久久久免费电影 | 欧美日韩中文字幕在线视频 | 日韩理论电影网 | 亚洲最新黄色网址 | 黄色网址在线免费 | 欧美日韩在线看片 | 蜜桃传媒视频麻豆第一区免费观看 | 爱爱视频天天干 | 91久久国产露脸精品国产护士 | 精品国产一区二区三区成人影院 | 黄色片免费在线播放 | 久久久久久久久久久影视 | 日本视频网 | 日本娇小videos高潮 | 久久99国产伦子精品免费 | 中文字幕1区2区 | 亚洲国产馆 | 欧美成人精品一区二区 | 成人做爰高潮片免费视频美国 | chinese中国真实乱对白 |