springboot-SSH-upload

[JSch](是Java Secure Channel的縮寫(xiě)。)

JSch是一個(gè)SSH2的純Java實(shí)現(xiàn)。它允許你連接到一個(gè)SSH服務(wù)器,并且可以使用端口轉(zhuǎn)發(fā),X11轉(zhuǎn)發(fā),文件傳輸?shù)?,?dāng)然你也可以集成它的功能到你自己的應(yīng)用程序。
本demo只介紹如何使用JSch實(shí)現(xiàn)的SFTP功能。SFTP是Secure File Transfer Protocol的縮寫(xiě),安全文件傳送協(xié)議??梢詾閭鬏斘募峁┮环N安全的加密方法。SFTP 為 SSH的一部份,是一種傳輸文件到服務(wù)器的安全方式。SFTP是使用加密傳輸認(rèn)證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對(duì)網(wǎng)絡(luò)安全性要求更高時(shí),可以使用SFTP代替FTP---來(lái)自百度的解釋)
要使用JSch,需要下載它的jar包,請(qǐng)從官網(wǎng)下載它:
ChannelSftp類(lèi)是JSch實(shí)現(xiàn)SFTP核心類(lèi),它包含了所有SFTP的方法,如:
    put():      文件上傳
    get():      文件下載
    cd():       進(jìn)入指定目錄
    ls():       得到指定目錄下的文件列表
    rename():   重命名指定文件或目錄
    rm():       刪除指定文件
    mkdir():    創(chuàng)建目錄
    rmdir():    刪除目錄
    等等(這里省略了方法的參數(shù),put和get都有多個(gè)重載方法,具體請(qǐng)看源代碼,這里不一一列出。)
  • JSch支持三種文件傳輸模式:

1.OVERWRITE------完全覆蓋模式,這是JSch的默認(rèn)文件傳輸模式,即如果目標(biāo)文件已經(jīng)存在,傳輸?shù)奈募⑼耆采w目標(biāo)文件,產(chǎn)生新的文件.
2.RESUME------恢復(fù)模式,如果文件已經(jīng)傳輸一部分,這時(shí)由于網(wǎng)絡(luò)或其他任何原因?qū)е挛募鬏斨袛?如果下一次傳輸相同的文件,則會(huì)從上一次中斷的地方續(xù)傳
3.APPEND------追加模式,如果目標(biāo)文件已存在,傳輸?shù)奈募⒃谀繕?biāo)文件后追加

文件上傳

實(shí)現(xiàn)文件上傳可以調(diào)用ChannelSftp對(duì)象的put方法。ChannelSftp中有12個(gè)put方法的重載方法:

public void put(String src, String dst)
將本地文件名為src的文件上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,若dst為目錄,則目標(biāo)文件名將與src文件名相同。

采用默認(rèn)的傳輸模式:overwrite

public void put(String src, String dst, int mode)
將本地文件名為src的文件上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,若dst為目錄,則目標(biāo)文件名將與src文件名相同。

指定文件傳輸模式為: mode(mode可選值為:ChannelSftp.OVERWRITE,ChannelSftp.RESUME,ChannelSftp.APPEND)

public void put(String src, String dst, SftpProgressMonitor monitor)

將本地文件名為src的文件上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,若dst為目錄,則目標(biāo)文件名將與src文件名相同。

采用默認(rèn)的傳輸模式:overwrite

并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控文件傳輸?shù)倪M(jìn)度。

public void put(String src, String dst,SftpProgressMonitor monitor, int mode)

將本地文件名為src的文件上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,若dst為目錄,則目標(biāo)文件名將與src文件名相同。

指定傳輸模式為: mode

并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控文件傳輸?shù)倪M(jìn)度。

public void put(InputStream src, String dst)
將本地的input stream對(duì)象src上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

采用默認(rèn)的傳輸模式:overwrite

public void put(InputStream src, String dst, int mode)
將本地的input stream對(duì)象src上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

指定文件傳輸模式為: mode

public void put(InputStream src, String dst, SftpProgressMonitor monitor)

將本地的input stream對(duì)象src上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

采用默認(rèn)的傳輸模式:overwrite

并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控傳輸?shù)倪M(jìn)度。

public void put(InputStream src, String dst,
SftpProgressMonitor monitor, int mode)

將本地的input stream對(duì)象src上傳到目標(biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

指定文件傳輸模式為: mode
并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控傳輸?shù)倪M(jìn)度。

public OutputStream put(String dst)
該方法返回一個(gè)輸出流,可以向該輸出流中寫(xiě)入數(shù)據(jù),最終將數(shù)據(jù)傳輸?shù)侥繕?biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

采用默認(rèn)的傳輸模式:overwrite

public OutputStream put(String dst, final int mode)
該方法返回一個(gè)輸出流,可以向該輸出流中寫(xiě)入數(shù)據(jù),最終將數(shù)據(jù)傳輸?shù)侥繕?biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

指定文件傳輸模式為: mode

public OutputStream put(String dst, final SftpProgressMonitor monitor, final int mode)
該方法返回一個(gè)輸出流,可以向該輸出流中寫(xiě)入數(shù)據(jù),最終將數(shù)據(jù)傳輸?shù)侥繕?biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

指定文件傳輸模式為: mode
并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控傳輸?shù)倪M(jìn)度。

public OutputStream put(String dst, final SftpProgressMonitor monitor, final int mode, long offset)
該方法返回一個(gè)輸出流,可以向該輸出流中寫(xiě)入數(shù)據(jù),最終將數(shù)據(jù)傳輸?shù)侥繕?biāo)服務(wù)器,目標(biāo)文件名為dst,dst不能為目錄。

指定文件傳輸模式為: mode
并使用實(shí)現(xiàn)了SftpProgressMonitor接口的monitor對(duì)象來(lái)監(jiān)控傳輸?shù)倪M(jìn)度。
offset指定了一個(gè)偏移量,從輸出流偏移offset開(kāi)始寫(xiě)入數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • feisky云計(jì)算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,302評(píng)論 0 5
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,200評(píng)論 2 33
  • 二月四號(hào),立春。在洗澡的時(shí)候突然想注冊(cè)一個(gè)帳號(hào),偶爾寫(xiě)點(diǎn)文字給自己,也許老了以后可以回憶一下。 今年會(huì)很忙,希望籍...
    笑紅塵327閱讀 175評(píng)論 0 1
  • 今天是1000天寫(xiě)作的第十五天。今天說(shuō)說(shuō)抗壓能力這件事。 人生在世,壓力常有。但每個(gè)人在壓力面前的表現(xiàn)有所不同。有...
    丁曉磊閱讀 23,582評(píng)論 0 10

友情鏈接更多精彩內(nèi)容