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

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

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

瀏覽:121日期: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久久,三上悠亚国产精品一区二区三区
婷婷综合在线| 亚洲欧洲一区| 视频一区日韩| 日韩欧美美女在线观看| 中文字幕成人| 日韩午夜电影| 免费视频一区二区| 中文不卡在线| 日本va欧美va精品| 国产精品久久| 久久精品毛片| 成人国产精品| 国产伊人精品| 蜜臀久久久久久久| 日本免费一区二区视频| 国产精品任我爽爆在线播放| 国产无遮挡裸体免费久久| 国产精品多人| 亚洲黑丝一区二区| 色综合视频一区二区三区日韩| 日本欧洲一区二区| 国产欧美成人| 久久天堂精品| 午夜亚洲福利| 国产精品久久久久久久久妇女| 久久久久久久久久久妇女 | 色欧美自拍视频| 欧美资源在线| 国产精品成人3p一区二区三区| 欧美日韩视频免费观看| 亚洲人成网站在线在线观看| 精品亚洲二区| 男女性色大片免费观看一区二区| 老色鬼精品视频在线观看播放| 亚洲综合电影| 日韩不卡手机在线v区| 日本不良网站在线观看| 日韩激情啪啪| 伊人影院久久| 国产综合色区在线观看| 91精品一区| 亚洲欧美视频一区二区三区| 日韩av在线播放网址| 欧美午夜三级| 中文字幕成人| 奶水喷射视频一区| 久久精品欧美一区| 国产精品久久久亚洲一区| 国产精品普通话对白| 精品黄色一级片| 日本亚洲不卡| 鲁大师影院一区二区三区| 黑森林国产精品av| 国产精品**亚洲精品| 欧美日韩一区二区三区不卡视频| 三级欧美韩日大片在线看| 亚洲第一精品影视| 欧美日韩精品免费观看视欧美高清免费大片 | 久久精品99国产精品| 久久不射网站| 免费人成黄页网站在线一区二区| 麻豆中文一区二区| 国产精品theporn| 日本99精品| 日本不卡的三区四区五区| 午夜久久av | 久久亚州av| 国产欧美日韩精品一区二区免费 | 日韩美女国产精品| 日韩精品第二页| 日韩成人av影视| 日韩高清在线观看一区二区| 最新国产精品视频| 亚洲激情另类| 日韩免费精品| 国产欧美一级| 国产极品久久久久久久久波多结野| 日韩欧美在线精品| 国产精品流白浆在线观看| 精品国产三区在线| 国产拍在线视频| 精品国产乱码久久久| 欧美日韩国产v| 一区在线观看| 国产日韩欧美一区二区三区在线观看| 免费亚洲婷婷| 久久麻豆精品| 爽好久久久欧美精品| 日韩一区二区三区四区五区| 美日韩一区二区三区| 99久久夜色精品国产亚洲狼| aa国产精品| 久久亚洲精品中文字幕| 欧美69视频| 日韩毛片网站| 精品一区毛片| 青青草精品视频| 日本精品不卡| 日韩欧美激情电影| 久久狠狠婷婷| 你懂的国产精品永久在线| 亚洲欧美日韩视频二区| 国产在线观看www| 欧美精品国产白浆久久久久| 国产真实久久| 97精品国产| 国产日产一区| 美美哒免费高清在线观看视频一区二区| 国产精品久久国产愉拍| 三级一区在线视频先锋| 精品免费av在线| 日韩av中文字幕一区二区三区| xxxxx性欧美特大| 国产亚洲久久| 日韩精品免费观看视频| 久久亚洲国产精品一区二区| 日韩天堂在线| 国产精品二区不卡| 鲁大师精品99久久久| 日本免费在线视频不卡一不卡二| 亚洲欧洲一区| 国产精品99免费看| 日韩一区二区三区在线免费观看| 精品在线网站观看| 国产精品大片| 国产日韩欧美| 欧美日韩黄网站| 日韩av不卡一区二区| 日韩欧美中文字幕一区二区三区 | 久久国际精品| 日本三级亚洲精品| 91午夜精品| 国产乱码精品一区二区亚洲| 国产日韩精品视频一区二区三区| 日本伊人久久| 国产精品入口久久| 欧美激情三区| 精品国产鲁一鲁****| 久久久久伊人| 日韩福利一区| 青青久久av| 亚洲欧洲一区二区天堂久久| 亚洲欧美日韩国产一区| 日韩精品免费一区二区夜夜嗨| 国产情侣久久| 国产不卡人人| 美女国产一区| 国产精品视频一区视频二区| 国产传媒在线观看| 蜜桃tv一区二区三区| 免费美女久久99| 国产精品久久久久av蜜臀| 精品少妇一区| 日韩午夜av| 国产中文欧美日韩在线| 精品亚洲美女网站| 综合激情五月婷婷| 美女久久99| 欧美一区二区三区高清视频| 中文字幕成人| 日本久久成人网| 日韩激情网站| 蜜桃国内精品久久久久软件9| 欧美日韩99| 99热国内精品| 国产精品视频一区二区三区四蜜臂 | 成人一区而且| 中文精品视频| 国产精品v一区二区三区| 在线日韩欧美| 精品一区二区三区四区五区| 国产亚洲精品v| 国产精选在线| 国产亚洲高清一区| 欧美二区视频| 国产高清不卡| 97se亚洲| 影院欧美亚洲| 久久电影tv| 国产日韩一区二区三区在线播放| 欧美手机在线| 国产精品亚洲综合在线观看| 亚洲激情婷婷| 91精品xxx在线观看| 久久精品国产亚洲aⅴ| 亚洲毛片一区| 91久久午夜| 香蕉视频亚洲一级| 国内揄拍国内精品久久| 日韩不卡手机在线v区| 丝袜亚洲精品中文字幕一区| 久久视频国产| 欧美+亚洲+精品+三区| 神马日本精品| 欧美精选视频一区二区| 欧美www视频在线观看| 欧美黑人做爰爽爽爽| 日本不卡视频在线观看| 久久福利影视| 视频一区二区三区中文字幕|