亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲男人天堂2024| 久久精品91久久久久久再现| 国产免费一区二区三区在线观看| 久久人91精品久久久久久不卡| 国产偷国产偷亚洲清高网站| 国产美女直播视频一区| 国产精品三级网站| 国产精品wwww| 国产精品久久久久久一区二区| 亚洲人成电影网站色xx| 伊人青青综合网站| 97超级碰碰人国产在线观看| 伊人久久男人天堂| 久久综合伊人77777| 亚洲在线视频福利| 日本午夜精品理论片a级appf发布| 日韩美女在线观看| 97在线观看免费| 成人妇女淫片aaaa视频| 日韩欧美在线观看| 久久中文久久字幕| 国产视频999| 国产精品大片wwwwww| 日韩视频亚洲视频| 欧美成人国产va精品日本一级| 中日韩美女免费视频网址在线观看| 91精品久久久久久综合乱菊| 亚洲欧美日韩天堂| 国产亚洲精品日韩| 国产精品女主播视频| 午夜欧美不卡精品aaaaa| 最近2019中文字幕在线高清| 欧美日韩国产精品一区二区三区四区| 中文字幕日韩视频| 欧美亚洲视频在线观看| 午夜精品在线视频| 日本在线观看天堂男亚洲| 91精品在线播放| 中文字幕亚洲欧美一区二区三区| 日韩精品在线观看一区二区| 国产精品国产亚洲伊人久久| 欧美激情精品在线| 色综合久久久久久中文网| 亚洲精品电影网| 亚洲国产精品电影| 欧美视频13p| 黑人极品videos精品欧美裸| 欧美在线免费视频| 欧美成人在线免费视频| 国产91av在线| 久久精品久久久久电影| 国内精品久久久久久久久| 午夜精品久久久久久久久久久久久| 两个人的视频www国产精品| 正在播放欧美一区| 欧美日韩精品在线观看| 国产精品亚洲网站| 92福利视频午夜1000合集在线观看| 日韩欧美黄色动漫| 亚洲毛片一区二区| 欧美一级在线播放| 国产成人精品一区二区| 狠狠躁18三区二区一区| 狠狠色狠色综合曰曰| 亚洲欧美制服中文字幕| 亚洲欧美日韩中文在线| 日韩美女写真福利在线观看| 欧美大片网站在线观看| 日韩日本欧美亚洲| 国产精品视频自在线| 亚洲国产精品va在线观看黑人| 日韩在线视频网站| 国产精品7m视频| 亚洲综合日韩中文字幕v在线| 亚洲丝袜av一区| 黄色成人av网| 国内精品免费午夜毛片| 2020欧美日韩在线视频| 国产69精品久久久久9999| 亚洲娇小xxxx欧美娇小| 亚洲性夜色噜噜噜7777| 国产suv精品一区二区三区88区| 亚洲欧美国产一本综合首页| 狠狠躁夜夜躁人人躁婷婷91| 久久亚洲精品中文字幕冲田杏梨| 亚洲精品小视频在线观看| 在线观看91久久久久久| 成人福利视频在线观看| 91精品国产色综合久久不卡98| 久久在线精品视频| 国产精品色视频| 欧美日韩一区免费| 亚洲欧美另类自拍| 色噜噜久久综合伊人一本| 欧美国产日韩免费| 91精品国产色综合| 96国产粉嫩美女| 91精品国产综合久久香蕉| 国产一区视频在线| 国产精品av电影| 在线精品视频视频中文字幕| 亚洲国产精品资源| 亚洲欧美成人网| 国产精品96久久久久久| 亚洲人午夜精品免费| 国产成人精品视频在线| 欧美激情视频在线观看| 国产91ⅴ在线精品免费观看| 久久99久久99精品中文字幕| 国产精品久久电影观看| 亚洲人成绝费网站色www| 5278欧美一区二区三区| 国产精品久久久精品| 法国裸体一区二区| 亚洲精品综合久久中文字幕| 97色在线观看| 中文字幕在线看视频国产欧美| 亚洲电影成人av99爱色| 992tv成人免费视频| 欧美激情视频给我| 国内精品一区二区三区| 久久久www成人免费精品张筱雨| 97人人爽人人喊人人模波多| 亚洲国产私拍精品国模在线观看| 久久av在线播放| 中日韩美女免费视频网站在线观看| 亚洲精品动漫久久久久| 欧美激情一区二区三区久久久| 午夜剧场成人观在线视频免费观看| 亚洲国产日韩欧美综合久久| 亚洲精品自拍第一页| 国产在线观看91精品一区| 中文字幕亚洲欧美一区二区三区| 日韩美女在线播放| 久久精品国产一区二区三区| 久久91精品国产91久久跳| 欧美性少妇18aaaa视频| 国产在线精品播放| 欧美乱大交做爰xxxⅹ性3| 日本免费久久高清视频| 深夜福利亚洲导航| 国产一区二区视频在线观看| 亚洲国产精品久久| 亚洲区bt下载| 亚洲在线免费看| 亚洲美女精品成人在线视频| 色综合五月天导航| 久久影视电视剧凤归四时歌| 91福利视频网| 精品免费在线观看| 亚洲free性xxxx护士hd| 欧美另类在线观看| 国产一区二区三区在线观看网站| 欧美日韩一区二区三区在线免费观看| 亚洲午夜精品久久久久久久久久久久| 亚洲黄页网在线观看| 亚洲欧美综合图区| 高清一区二区三区四区五区| 欧美成人精品在线播放| 久久精品视频99| 在线亚洲男人天堂| 久久久免费精品视频| 91在线直播亚洲| 亚洲精品日韩av|