日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java如何實現上傳文件到服務器指定目錄

瀏覽:118日期:2022-09-02 17:09:06

前言需求

使用freemarker生成的靜態文件,統一存儲在某個服務器上。本來一開始打算使用ftp實現的,奈何老連接不上,改用jsch。畢竟有現成的就很舒服,在此介紹給大家。

具體實現

引入的pom

<dependency><groupId>ch.ethz.ganymed</groupId><artifactId>ganymed-ssh2</artifactId><version>262</version></dependency><dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency>

建立實體類

public class ResultEntity { private String code; private String message; private File file; public ResultEntity(){} public ResultEntity(String code, String message, File file) {super();this.code = code;this.message = message;this.file = file;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public File getFile() {return file;}public void setFile(File file) {this.file = file;} }

public class ScpConnectEntity { private String userName; private String passWord; private String url; private String targetPath; public String getTargetPath() { return targetPath; } public void setTargetPath(String targetPath) { this.targetPath = targetPath; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; }}

建立文件上傳工具類

@Configuration

@Configurationpublic class FileUploadUtil { @Value('${remoteServer.url}') private String url; @Value('${remoteServer.password}') private String passWord; @Value('${remoteServer.username}') private String userName; @Async public ResultEntity uploadFile(File file, String targetPath, String remoteFileName) throws Exception{ ScpConnectEntity scpConnectEntity=new ScpConnectEntity(); scpConnectEntity.setTargetPath(targetPath); scpConnectEntity.setUrl(url); scpConnectEntity.setPassWord(passWord); scpConnectEntity.setUserName(userName); String code = null; String message = null; try { if (file == null || !file.exists()) {throw new IllegalArgumentException('請確保上傳文件不為空且存在!'); } if(remoteFileName==null || ''.equals(remoteFileName.trim())){throw new IllegalArgumentException('遠程服務器新建文件名不能為空!'); } remoteUploadFile(scpConnectEntity, file, remoteFileName); code = 'ok'; message = remoteFileName; } catch (IllegalArgumentException e) { code = 'Exception'; message = e.getMessage(); } catch (JSchException e) { code = 'Exception'; message = e.getMessage(); } catch (IOException e) { code = 'Exception'; message = e.getMessage(); } catch (Exception e) { throw e; } catch (Error e) { code = 'Error'; message = e.getMessage(); } return new ResultEntity(code, message, null); } private void remoteUploadFile(ScpConnectEntity scpConnectEntity, File file, String remoteFileName) throws JSchException, IOException { Connection connection = null; ch.ethz.ssh2.Session session = null; SCPOutputStream scpo = null; FileInputStream fis = null; try { createDir(scpConnectEntity); }catch (JSchException e) { throw e; } try { connection = new Connection(scpConnectEntity.getUrl()); connection.connect(); if(!connection.authenticateWithPassword(scpConnectEntity.getUserName(),scpConnectEntity.getPassWord())){throw new RuntimeException('SSH連接服務器失敗'); } session = connection.openSession(); SCPClient scpClient = connection.createSCPClient(); scpo = scpClient.put(remoteFileName, file.length(), scpConnectEntity.getTargetPath(), '0666'); fis = new FileInputStream(file); byte[] buf = new byte[1024]; int hasMore = fis.read(buf); while(hasMore != -1){scpo.write(buf);hasMore = fis.read(buf); } } catch (IOException e) { throw new IOException('SSH上傳文件至服務器出錯'+e.getMessage()); }finally { if(null != fis){try { fis.close();} catch (IOException e) { e.printStackTrace();} } if(null != scpo){try { scpo.flush();// scpo.close();} catch (IOException e) { e.printStackTrace();} } if(null != session){session.close(); } if(null != connection){connection.close(); } } } private boolean createDir(ScpConnectEntity scpConnectEntity ) throws JSchException { JSch jsch = new JSch(); com.jcraft.jsch.Session sshSession = null; Channel channel= null; try { sshSession = jsch.getSession(scpConnectEntity.getUserName(), scpConnectEntity.getUrl(), 22); sshSession.setPassword(scpConnectEntity.getPassWord()); sshSession.setConfig('StrictHostKeyChecking', 'no'); sshSession.connect(); channel = sshSession.openChannel('sftp'); channel.connect(); } catch (JSchException e) { e.printStackTrace(); throw new JSchException('SFTP連接服務器失敗'+e.getMessage()); } ChannelSftp channelSftp=(ChannelSftp) channel; if (isDirExist(scpConnectEntity.getTargetPath(),channelSftp)) { channel.disconnect(); channelSftp.disconnect(); sshSession.disconnect(); return true; }else { String pathArry[] = scpConnectEntity.getTargetPath().split('/'); StringBuffer filePath=new StringBuffer('/'); for (String path : pathArry) {if (path.equals('')) { continue;}filePath.append(path + '/');try { if (isDirExist(filePath.toString(),channelSftp)) { channelSftp.cd(filePath.toString()); } else { // 建立目錄 channelSftp.mkdir(filePath.toString()); // 進入并設置為當前目錄 channelSftp.cd(filePath.toString()); }} catch (SftpException e) { e.printStackTrace(); throw new JSchException('SFTP無法正常操作服務器'+e.getMessage());} } } channel.disconnect(); channelSftp.disconnect(); sshSession.disconnect(); return true; } private boolean isDirExist(String directory,ChannelSftp channelSftp) { boolean isDirExistFlag = false; try { SftpATTRS sftpATTRS = channelSftp.lstat(directory); isDirExistFlag = true; return sftpATTRS.isDir(); } catch (Exception e) { if (e.getMessage().toLowerCase().equals('no such file')) {isDirExistFlag = false; } } return isDirExistFlag; }}

屬性我都寫在Spring的配置文件里面了。將這個類托管給spring容器。

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

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品美女| 亚洲精品一级二级三级| 日本在线不卡视频| 日韩国产在线不卡视频| 日韩美女国产精品| 亚洲精品系列| 亚洲欧洲国产精品一区| 日韩黄色av| 国产日韩欧美中文在线| 国产黄色一区| 福利在线免费视频| 免费一二一二在线视频| 国产精品99一区二区三| 国产精品免费精品自在线观看| 国产精品中文字幕制服诱惑| 久久精品国产网站| 日韩国产激情| 午夜精品影院| 视频在线观看一区二区三区| 日韩av成人高清| 麻豆精品视频在线| 播放一区二区| 欧美专区18| 日本中文字幕视频一区| 国产欧美欧美| 激情久久一区二区| 亚洲午夜黄色| 蜜桃91丨九色丨蝌蚪91桃色| 蜜臀久久99精品久久久久宅男 | 中文一区一区三区免费在线观| 美国三级日本三级久久99| 日本欧美一区| 91亚洲国产成人久久精品| 亚洲韩日在线| 日本不卡一区二区| а√在线中文在线新版| 九九久久婷婷| 日本亚州欧洲精品不卡| 国内精品伊人| 亚洲成人精品| 亚洲制服欧美另类| 欧美aⅴ一区二区三区视频| 久久久久久自在自线| 欧美特黄一区| 国产精品日本一区二区三区在线| 四季av一区二区凹凸精品| av一区在线| 日韩中文字幕av电影| 日韩av影院| 天堂8中文在线最新版在线| 丝袜美腿亚洲一区二区图片| 卡一精品卡二卡三网站乱码| 欧美午夜精彩| 欧美日韩亚洲国产精品| 亚洲黄色网址| 日韩欧美久久| 日韩免费福利视频| 中文字幕亚洲在线观看| 视频在线不卡免费观看| 乱人伦精品视频在线观看| 免费精品一区| 99xxxx成人网| 九九99久久精品在免费线bt| 欧美日韩三区| 久久三级毛片| 蜜臀av国产精品久久久久| 日本一区二区免费高清| 蜜臀久久99精品久久久画质超高清| 久久精品国产一区二区| 欧美特黄一区| 久久99影视| 丝袜美腿高跟呻吟高潮一区| 最新中文字幕在线播放| 视频精品一区| 欧美成人国产| 精品少妇一区| 日本在线观看不卡视频| 99精品小视频| 精品视频高潮| 日韩福利视频一区| 亚洲国产成人精品女人| 卡一精品卡二卡三网站乱码| 中文字幕av一区二区三区四区| 丝袜美腿一区| 欧美日韩中出| 视频一区二区三区在线| 日韩一区自拍| 国产精品草草| 久久精品一区二区不卡| 亚洲区第一页| 亚洲精品影视| 精品一区二区三区免费看| 欧美日韩在线二区| 97se亚洲| 欧美一级精品| 欧美专区一区| 黄色在线网站噜噜噜| 一区二区三区四区日韩| 久久精品影视| 久久精品av麻豆的观看方式| 好看不卡的中文字幕| 日韩欧美不卡| 精品国产精品国产偷麻豆| 欧美精品影院| 日本成人在线一区| 一区二区国产在线| 伊人精品在线| 国产一区二区三区自拍| 色爱av综合网| 欧美成人精品三级网站| 黑森林国产精品av| 亚洲精品**中文毛片| 四虎8848精品成人免费网站| 国产一区二区三区探花| 国产无遮挡裸体免费久久| 免费观看久久久4p| 亚洲欧美久久| 日韩视频精品在线观看| 欧美/亚洲一区| 欧美精品一二| 欧美日韩视频| 国产二区精品| 黄页网站一区| 国产亚洲网站| 免费在线看一区| 亚洲精品美女91| 日韩一二三区在线观看| 日韩精品久久理论片| 日韩美女精品| 欧美日韩尤物久久| 99久久久久国产精品| 欧美精品中文字幕亚洲专区| 欧美私人啪啪vps| 日韩精品一区二区三区中文| 日韩免费精品| 日韩av中文字幕一区二区| 精品国产一区二区三区性色av| 欧美激情另类| 中文一区二区| 精品国产99| 日韩在线视频精品| 欧美丝袜一区| 国产精品毛片一区二区三区| 中文视频一区| 五月天久久久| 亚洲三级精品| 欧美黑人做爰爽爽爽| 激情国产在线| 红桃视频亚洲| 亚洲三区欧美一区国产二区| 国产探花在线精品一区二区| 卡一精品卡二卡三网站乱码| 日韩免费小视频| 在线亚洲一区| 国产亚洲一区二区三区啪| 久久久久久久欧美精品| 97久久亚洲| 国产伊人久久| 九九综合九九| 日本不卡高清| 97精品中文字幕| 黄色亚洲免费| 国产网站在线| 亚洲激情中文| 爽好多水快深点欧美视频| 亚洲精品在线二区| 中文在线а√天堂| 久久激情五月婷婷| 日韩一级网站| 亚洲精品va| 一区在线免费观看| 99视频精品| 中文在线一区| 国产精品4hu.www| 日韩欧美自拍| 免费成人av在线播放| 国产精品宾馆| 在线一区电影| 中文字幕亚洲精品乱码| 国产乱人伦精品一区| 99久久99视频只有精品| 日韩精选在线| 成人美女视频| 日韩av不卡一区二区| 欧美成人基地 | 在线亚洲自拍| 欧美日韩a区| 中文字幕高清在线播放| 石原莉奈在线亚洲二区| 国产一区调教| 天堂成人免费av电影一区| 久久精品毛片| 蜜臀精品一区二区三区在线观看| 国产伊人久久| 99riav1国产精品视频| 精品视频久久| 亚洲欧美网站在线观看| 日韩亚洲一区在线| 日韩精品亚洲专区| 欧美成a人免费观看久久|