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

首頁 > 編程 > Java > 正文

javaweb上傳文件到服務器中

2019-11-06 06:16:02
字體:
來源:轉載
供稿:網友

   項目中經常要做上傳功能,除了頁面使用上傳組件外,后臺的文件處理一種是 存放在項目中文件夾,另一種存放部署的服務器中,后一種更靈活對項目更友好。

JSch是java Secure Channel的縮寫。JSch是一個SSH2的純Java實現。它允許你連接到一個SSH服務器,并且可以使用端口轉發,X11轉發,文件傳輸等,當然你也可以集成它的功能到你自己的應用程序。  本文只介紹如何使用JSch實現的SFTP功能。  SFTP是Secure File Transfer PRotocol的縮寫,安全文件傳送協議??梢詾閭鬏斘募峁┮环N安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸文件到服務器的安全方式。SFTP是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。(來自百度的解釋)   要使用JSch,需要下載它的jar包,請從官網下載它:http://www.jcraft.com/jsch/ ChannelSftp類是JSch實現SFTP核心類,它包含了所有SFTP的方法,如:put():      文件上傳get():      文件下載cd():       進入指定目錄ls():       得到指定目錄下的文件列表rename():   重命名指定文件或目錄rm():       刪除指定文件mkdir():    創建目錄rmdir():    刪除目錄以下是stfpUtils工具類的方法
package com.pzedu.infrastructure.common.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.Properties;import java.util.Vector;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.ChannelSftp.LsEntry;import com.jcraft.jsch.JSch;import com.jcraft.jsch.session;import com.jcraft.jsch.SftpException;/** * sftp 工具類 *  * @author weird */public final class Sftps {	private static final Logger log = LoggerFactory.getLogger(Sftps.class);		private Session sshSession;		private ChannelSftp sftp;		/**	 * 連接sftp服務器	 * @param host	 * @param port	 * @param username	 * @param passWord	 * @return	 * @throws Exception	 */	public ChannelSftp connect(String host, int port, String username, String password) throws Exception {		JSch jsch = new JSch();		sshSession = jsch.getSession(username, host, port);				log.debug("Session created.");				sshSession.setPassword(password);		Properties sshConfig = new Properties();		sshConfig.put("StrictHostKeyChecking", "no");		sshSession.setConfig(sshConfig);		sshSession.connect();				log.debug("Session connected.");		log.debug("Opening Channel.");				Channel channel = sshSession.openChannel("sftp");		channel.connect();		sftp = (ChannelSftp) channel;				log.debug("Connected to " + host + ".");				return sftp;	}	/**	 * 連接sftp服務器	 * @param host	 * @param port	 * @param username	 * @param privateKey	 * @param passphrase	 * @return	 * @throws Exception 	 */	public ChannelSftp connect(String host, int port, String username, String privateKey ,String passphrase) throws Exception {		JSch jsch = new JSch();				//設置密鑰和密碼	    if (!StringUtils.isEmpty(privateKey)) {	        if (!StringUtils.isEmpty(passphrase)) {	            //設置帶口令的密鑰	            jsch.addIdentity(privateKey, passphrase);	        } else {	            //設置不帶口令的密鑰	            jsch.addIdentity(privateKey);	        }	    }		sshSession = jsch.getSession(username, host, port);				log.debug("Session created.");				Properties sshConfig = new Properties();		sshConfig.put("StrictHostKeyChecking", "no");		sshSession.setConfig(sshConfig);		sshSession.connect();				log.debug("Session connected.");		log.debug("Opening Channel.");				Channel channel = sshSession.openChannel("sftp");		channel.connect();		sftp = (ChannelSftp) channel;				log.debug("Connected to " + host + ".");				return sftp;	}		public void portForwardingL(int lport, String rhost, int rport) throws Exception {		int assinged_port = sshSession.setPortForwardingL(lport, rhost, rport);	    System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);	}	/**	 * 斷開連接	 */	public void disconnect() {		if (sftp != null) sftp.disconnect();		if (sshSession != null) sshSession.disconnect();	}	/**	 * 上傳文件	 * 	 * @param directory	 *            上傳的目錄	 * @param uploadFile	 *            要上傳的文件	 * @param sftp	 */	public void upload(String directory, String uploadFile) throws Exception {		sftp.cd(directory);		File file = new File(uploadFile);		sftp.put(new FileInputStream(file), file.getName());	}		public void upload(String directory, File file) throws Exception {		sftp.cd(directory);		sftp.put(new FileInputStream(file), file.getName());		System.out.println("upload file "+file.getAbsolutePath() + " to host " + sshSession.getHost());	}		public void uploadDir(File src, String dst) throws Exception {		if (!exist(dst)) {			sftp.mkdir(dst);		}		if (src.isFile()) {			upload(dst, src);		} else {			for (File file : src.listFiles()) {				if (file.isDirectory()) {					uploadDir(file, dst + "/" + file.getName());				}				upload(dst, file);			}		}	}	/**	 * 目錄是否查找	 * @param path	 * @return	 * @throws SftpException	 */	public boolean exist(String path) throws SftpException {		String pwd = sftp.pwd();		try {			sftp.cd(path);		} catch (SftpException e) {			if (e.id == ChannelSftp.SSH_FX_NO_SUCH_FILE) {				return false;			} else {				throw e;			}		} finally {			sftp.cd(pwd);		}				return true;	}	/**	 * 下載文件	 * @param directory	 * @param downloadFile	 * @param saveFile	 * @throws Exception	 */	public void download(String directory, String downloadFile, String saveFile) throws Exception {		sftp.cd(directory);		File file = new File(saveFile);		sftp.get(downloadFile, new FileOutputStream(file));	}		/**	 * 下載文件	 * @param directory	 * @param downloadFile	 * @param saveFile	 * @throws Exception	 */	public void download(String directory, String downloadFile, File saveFile) throws Exception {		sftp.cd(directory);		sftp.get(downloadFile, new FileOutputStream(saveFile));		System.out.println("download file "+directory + "/" +downloadFile + " from host " + sshSession.getHost());	}		/**	 * 下載文件	 * @param src	 * @param dst	 * @throws Exception	 */	@SuppressWarnings("unchecked")	public void downloadDir(String src, File dst) throws Exception {		try {			sftp.cd(src);		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}				dst.mkdirs();				Vector<LsEntry> files = sftp.ls(src);		for (LsEntry lsEntry : files) {			if (lsEntry.getFilename().equals(".") || lsEntry.getFilename().equals("..")) {				continue;			}			if (lsEntry.getLongname().startsWith("d")) {				downloadDir(src + "/" + lsEntry.getFilename(), new File(dst, lsEntry.getFilename()));			} else {				download(src, lsEntry.getFilename(), new File(dst, lsEntry.getFilename()));			}					}	}	/**	 *  刪除文件	 * @param directory	 * @param deleteFile	 * @throws SftpException	 */	public void delete(String directory, String deleteFile) throws SftpException {		sftp.cd(directory);		sftp.rm(deleteFile);	}	/**	 * 列出目錄下的文件	 * @param directory	 * @return	 * @throws SftpException	 */	public Vector listFiles(String directory) throws SftpException {		return sftp.ls(directory);	}	public static void main(String[] args) throws Exception {		Sftps sf = new Sftps();		String host = "192.168.56.101";		int port = 22;		String username = "root";		String password = "123";		String privateKey = "C:/Users/Administrator/Desktop/seRT_SSH_key/front/Identity";		String passphrase = "h$VgBrx3nhwH#2!h6zs0uGhzcCX8dTPa";		String src = "/usr/local/apache-tomcat-7.0.63/webapps/pzedu";				sf.connect(host, port, username, privateKey, passphrase);		sf.portForwardingL(1194, "10.169.97.248", 1194);		//		ChannelSftp sftp = sf.connect(host, port, username, password);//		sf.upload(directory, uploadFile, sftp);//		sf.download(directory, downloadFile, saveFile, sftp);//		sf.delete(directory, deleteFile, sftp);				//		try {////			Vector files = sf.listFiles("/root");//			sf.downloadDir(src, new File("C:/staticsfile"));////			sf.uploadDir(new File("C:/staticsfile"), "/root/temp");//			System.out.println("finished");//			sftp.disconnect();//		} catch (Exception e) {//			e.printStackTrace();//		}//		sf.disconnect();	}		public Session getSshSession() {		return sshSession;	}	public ChannelSftp getSftp() {		return sftp;	}}采用的是stfp協議連接。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一区二区三区成人| 成人乱人伦精品视频在线观看| 国产精品自拍小视频| 5278欧美一区二区三区| 麻豆精品精华液| 久久69精品久久久久久国产越南| 一本色道久久88精品综合| 欧美一区二区三区四区在线| 国产精品免费观看在线| 97精品欧美一区二区三区| 久久久精品久久久| 久久久国产视频91| 欧美日韩国产在线| 日本欧美在线视频| 国产精品日韩欧美| 5566成人精品视频免费| 精品久久中文字幕| 亚洲最大激情中文字幕| 日韩中文字幕欧美| 国产一区二区三区视频免费| 久久精品国产2020观看福利| 91在线免费视频| 高清欧美性猛交xxxx黑人猛交| 91精品国产综合久久久久久蜜臀| 日韩精品视频在线播放| 久久久av电影| 精品国产一区二区三区在线观看| 不卡在线观看电视剧完整版| 国内精品视频在线| 另类色图亚洲色图| 韩国日本不卡在线| 欧美日韩高清在线观看| 亚洲欧美日韩爽爽影院| 午夜精品久久久久久久99热| 91精品视频在线播放| 丁香五六月婷婷久久激情| 亚洲精品按摩视频| 高跟丝袜欧美一区| 欧美色视频日本版| 亚洲成年人在线| 国产精品久久久久久久久久| 日韩一区在线视频| 久久久精品在线观看| 欧美丰满老妇厨房牲生活| 日韩中文在线观看| 欧亚精品中文字幕| 欧美成人免费观看| 亚洲色图校园春色| 久久久女女女女999久久| 一区二区三区回区在观看免费视频| 国产美女被下药99| yellow中文字幕久久| 久久影视电视剧凤归四时歌| 日韩在线免费视频观看| 久久久噜噜噜久久| 精品爽片免费看久久| 欧美性猛交xxxxx免费看| 久久久久久国产三级电影| 欧美午夜激情在线| 欧美精品xxx| 久久久国产精品x99av| 亚洲精品日韩久久久| 欧美专区中文字幕| 亚洲国产高潮在线观看| 欧美日韩中文字幕日韩欧美| 在线播放日韩专区| 久久久亚洲福利精品午夜| 中文字幕一区日韩电影| 色悠久久久久综合先锋影音下载| 国产精品亚洲网站| 精品一区精品二区| 日韩在线激情视频| 久久久999国产| 亚洲色图五月天| 理论片在线不卡免费观看| 国产精品一区二区三区久久久| 亚洲a级在线观看| 在线观看免费高清视频97| 欧美电影在线免费观看网站| 成人在线视频网站| 激情久久av一区av二区av三区| 午夜精品三级视频福利| 欧美日韩免费网站| 日本精品久久电影| 欧美激情女人20p| 日韩在线观看免费高清完整版| 91精品国产综合久久香蕉最新版| 91精品视频播放| 91九色视频导航| 成人福利视频在线观看| 免费不卡在线观看av| 一区二区在线视频播放| 91久久久久久久| 91国偷自产一区二区三区的观看方式| 久久成人综合视频| 欧美日韩成人在线视频| 日韩中文字幕不卡视频| 国产精品99久久久久久白浆小说| 国产成人综合亚洲| 国产免费一区视频观看免费| 欧美日韩国产精品专区| 91久久久久久久一区二区| 国产精品久久久久久久app| 久久综合久久88| 久久69精品久久久久久久电影好| 亚洲成人精品久久| 亚洲日韩中文字幕| 精品国产31久久久久久| 亚洲国产精品一区二区三区| 国产视频自拍一区| 亚洲精品福利在线| 日韩精品亚洲精品| 久久91亚洲精品中文字幕| 久久精品视频99| 久久99青青精品免费观看| 欧美大片大片在线播放| 国产精品久久久久久久久借妻| 欧美大人香蕉在线| 亚洲日韩中文字幕| 国产日韩精品综合网站| 欧美午夜激情视频| 精品精品国产国产自在线| 国产成人精品视频在线观看| 久久综合色88| 欧美性少妇18aaaa视频| 成人欧美在线观看| 精品爽片免费看久久| 久久久久女教师免费一区| 成人黄色激情网| 奇米4444一区二区三区| 国产综合在线观看视频| 亚洲国产免费av| 亚洲视频在线观看免费| 97视频免费在线观看| 亚洲精品av在线| 青青草原成人在线视频| 国产一区二区美女视频| 中文欧美日本在线资源| 福利精品视频在线| 精品香蕉一区二区三区| 色与欲影视天天看综合网| 成人妇女淫片aaaa视频| 亚洲视频免费一区| 亚洲福利影片在线| 亚洲成人久久电影| 亚洲欧洲偷拍精品| 亚洲人成网站999久久久综合| 欧美激情精品久久久久久黑人| 欧美另类交人妖| 亚洲一区二区中文| 国产美女直播视频一区| 亚洲天堂av在线播放| 国产一区二区三区高清在线观看| 热99精品里视频精品| 精品国产欧美成人夜夜嗨| 蜜臀久久99精品久久久无需会员| 亚洲自拍偷拍第一页| 国语自产偷拍精品视频偷| 日韩在线观看免费av| 日韩欧美中文在线| 国产91精品青草社区| 日韩中文字幕在线观看| 日韩电影大全免费观看2023年上| 日韩成人在线视频|