最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot實(shí)現(xiàn)文件上傳至linux指定目錄

 更新時(shí)間:2025年08月19日 09:26:28   作者:fengfeng N  
這篇文章主要為大家詳細(xì)介紹了springboot項(xiàng)目如何實(shí)現(xiàn)一個(gè)文件上傳接口,涉及vsftpd服務(wù)、SSH協(xié)議以及對(duì)linux系統(tǒng)的一些配置,希望對(duì)大家有所幫助

本篇文章講述一個(gè)springboot項(xiàng)目如何實(shí)現(xiàn)一個(gè)文件上傳接口,涉及vsftpd服務(wù)、SSH協(xié)議以及對(duì)linux系統(tǒng)的一些配置。

一、springboot工程部分

本篇文章略過(guò)springboot創(chuàng)建過(guò)程,具體見(jiàn)之前發(fā)過(guò)的文章

1.1在pom.xml中添加SFTP(SSH 文件傳輸協(xié)議)的依賴(請(qǐng)注意你的版本號(hào),下面不在贅述)

jsch 是一個(gè)用Java編寫的SSH2協(xié)議庫(kù),它可以用來(lái)實(shí)現(xiàn)SFTP客戶端和服務(wù)器端的功能。

<!--        添加sftp依賴-->
    <dependency>
        <groupId>com.jcraft</groupId>
        <artifactId>jsch</artifactId>
        <version>0.1.55</version>
    </dependency>

1.2application.yml配置文件

sftp_ubantu:
  host: 192.168.000.000    //你的linux的ip
  port: 22                 //端口號(hào)
  username: root            //用戶名
  password: *********
  remoteDir: /XXXX/XXXX/XXXX  //指定文件路徑

1.3SFTP工具類

import com.jcraft.jsch.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;


@Component
public class SFTPUtil {
    private static String host;
    @Value("${sftp_ubantu.host}")
    public void setHost(String host) {
        SFTPUtil.host = host;
    }

    private static Integer port;
    @Value("${sftp_ubantu.port}")
    public void setPort(Integer port) {
        SFTPUtil.port = port;
    }

    private static String username;
    @Value("${sftp_ubantu.username}")
    public void setUsername(String username) {
        SFTPUtil.username = username;
    }

    private static String password;
    @Value("${sftp_ubantu.password}")
    public void setPassword(String password) {
        SFTPUtil.password = password;
    }

    private static String remoteDir;
    @Value("${sftp_ubantu.remoteDir}")
    public void setRemoteDir(String remoteDir) {
        SFTPUtil.remoteDir = remoteDir;
    }

    public static void uploadFile(InputStream inputStream, String fileName) throws IOException, JSchException, SftpException {
        // TODO Auto-generated method stub
        Session session = null;
        Channel channel = null;
        JSch jsch = new JSch();
        try {
            //創(chuàng)建會(huì)話
            session = jsch.getSession(username, host, port != null ? port : 22);
            //設(shè)置密碼
            //設(shè)置密碼
            session.setPassword(password);
            //設(shè)置第一次登陸的時(shí)候提示,可選值:(ask | yes | no)
            session.setConfig("StrictHostKeyChecking", "no");
            //設(shè)置連接超時(shí)時(shí)間
            session.connect(30000);
            //創(chuàng)建sftp通信通道
            channel = session.openChannel("sftp");
            channel.connect(1000);
            //創(chuàng)建sftp客戶端
            ChannelSftp sftp = (ChannelSftp) channel;
            //進(jìn)入遠(yuǎn)程目錄
            sftp.cd(remoteDir);
            //上傳文件
            sftp.put(inputStream, fileName);
            inputStream.close();
        }  finally {
            //關(guān)流操作
            if (session != null) {
                session.disconnect();
            }
            if (channel != null) {
                channel.disconnect();
            }
        }
    }

}

1.4接口代碼

import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.SftpException;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;

@RestController
@RequestMapping("/test")
public class FileController {
    //上傳文件
    @PostMapping("/upload")
    public Result uploadFile(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return Result.error("文件為空,請(qǐng)重新上傳文件");
        }
        InputStream inputStream = null;
        try {
            inputStream = file.getInputStream();
            SFTPUtil.uploadFile(inputStream, file.getOriginalFilename());
            return Result.success("文件上傳成功");
        } catch (IOException | JSchException | SftpException e) {
            return Result.error("文件上傳失敗"+e.getMessage());
        }finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}



二、Linux系統(tǒng)中的相關(guān)配置

2.1 配置虛擬機(jī)網(wǎng)絡(luò)

首先將虛擬機(jī)的網(wǎng)絡(luò)進(jìn)行配置,選用橋接模式,使得虛擬機(jī)與本機(jī)在同一字段

如果不是橋接模式則依次點(diǎn)擊虛擬機(jī)----->設(shè)置 或者按CTRL+D喚出虛擬機(jī)設(shè)置

2.2ubuntu安裝sftp服務(wù)器

更新系統(tǒng)包確保系統(tǒng)包是最新的。打開終端運(yùn)行下面的命令

sudo apt update
sudo apt upgrade -y

使用apt包管理器安裝vsftpd。

sudo apt install vsftpd

檢查vsftpd服務(wù)是否正在運(yùn)行:

sudo systemctl status vsftpd

2.3配置vsftp服務(wù)器

要配置vsftpd服務(wù)器以允許root用戶和普通用戶上傳文件和創(chuàng)建文件夾

打開終端。

使用文本編輯器編輯vsftpd配置文件。例如,使用vim或vi

sudo vim /etc/vsftpd.conf

在配置文件中找到以下幾個(gè)被注釋的命令行,按i鍵切換至插入模式,刪掉#取消注釋

//允許寫命令
write_enable=YES
//允許上傳
upload_enable=YES

按shift+:進(jìn)入命令模式,輸入wq存盤退出

當(dāng)配置文件發(fā)送改動(dòng)的時(shí)候需要重啟vsftpd服務(wù)器

sudo systemctl resatrt vsftpd

2.4安裝OpenSSH服務(wù)器

OpenSSH 是一個(gè)廣泛使用的 SSH 服務(wù)器實(shí)現(xiàn),它默認(rèn)支持 SFTP,運(yùn)行下面命令。

sudo apt install openssh-server -y

安裝完成后,OpenSSH 服務(wù)器會(huì)自動(dòng)啟動(dòng)并設(shè)置為開機(jī)自啟。您可以使用以下命令檢查 SSH 服務(wù)的狀態(tài):

sudo systemctl status ssh

如果服務(wù)沒(méi)有運(yùn)行,可以使用以下命令手動(dòng)啟動(dòng)它:

sudo systemctl start ssh

配置防火墻

開放你要請(qǐng)求的端口,一般vsftp是22端口

sudo ufw allow 22/tcp

通過(guò)以上步驟應(yīng)該就可以實(shí)現(xiàn)vsftp文件上傳了

到此這篇關(guān)于Springboot實(shí)現(xiàn)文件上傳至linux指定目錄的文章就介紹到這了,更多相關(guān)Springboot文件上傳指定目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • idea使用外置tomcat配置springboot詳細(xì)步驟

    idea使用外置tomcat配置springboot詳細(xì)步驟

    昨天小編遇到一個(gè)問(wèn)題使用springboot自帶的tomcat啟動(dòng)沒(méi)有任何問(wèn)題,不知道idea使用外置tomcat配置springboot該如何設(shè)置的,今天小編給大家分享一篇教程幫助大家解決這個(gè)問(wèn)題
    2021-07-07
  • 淺談Spring中IOC的理解和認(rèn)知

    淺談Spring中IOC的理解和認(rèn)知

    這篇文章主要介紹了淺談Spring中IOC的理解和認(rèn)知,想了解Spring的同學(xué)不要錯(cuò)過(guò)啊
    2021-04-04
  • Jackson庫(kù)中objectMapper的用法

    Jackson庫(kù)中objectMapper的用法

    這篇文章主要介紹了Jackson庫(kù)中objectMapper的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中@Autowired和@Resource區(qū)別

    Java中@Autowired和@Resource區(qū)別

    本文主要介紹了Java中@Autowired和@Resource區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringCloud微服務(wù)架構(gòu)升級(jí)匯總

    SpringCloud微服務(wù)架構(gòu)升級(jí)匯總

    這篇文章主要介紹了SpringCloud微服務(wù)架構(gòu)升級(jí)匯總,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Java toString方法重寫工具之ToStringBuilder案例詳解

    Java toString方法重寫工具之ToStringBuilder案例詳解

    這篇文章主要介紹了Java toString方法重寫工具之ToStringBuilder案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何使用 IntelliJ IDEA 編寫 Spark 應(yīng)用程序(Scala + Maven)

    如何使用 IntelliJ IDEA 編寫 Spark 應(yīng)用程序(Sc

    本教程展示了如何在IntelliJIDEA中使用Maven編寫和運(yùn)行一個(gè)簡(jiǎn)單的Spark應(yīng)用程序(例如WordCount程序),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Java?實(shí)現(xiàn)字符串SHA1加密方法

    Java?實(shí)現(xiàn)字符串SHA1加密方法

    這篇文章主要介紹了Java?實(shí)現(xiàn)字符串SHA1加密方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java關(guān)鍵字super超詳細(xì)解釋

    Java關(guān)鍵字super超詳細(xì)解釋

    在Java中super是一個(gè)關(guān)鍵字,用于訪問(wèn)父類中的屬性、方法或構(gòu)造函數(shù),這篇文章主要給大家介紹了關(guān)于Java關(guān)鍵字super超詳細(xì)解釋的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 基于mybatis高級(jí)映射多對(duì)多查詢的實(shí)現(xiàn)

    基于mybatis高級(jí)映射多對(duì)多查詢的實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇基于mybatis高級(jí)映射多對(duì)多查詢的實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10

最新評(píng)論

天长市| 青冈县| 绿春县| 报价| 双桥区| 黎川县| 肥乡县| 阿拉善右旗| 礼泉县| 东城区| 板桥市| 鄂托克旗| 南京市| 兴国县| 阿克苏市| 连云港市| 盐亭县| 麻城市| 治县。| 札达县| 德安县| 长汀县| 荆州市| 于都县| 彩票| 金川县| 商水县| 湖北省| 唐山市| 富顺县| 武乡县| 揭西县| 渝北区| 太和县| 邢台市| 马关县| 林州市| 巢湖市| 达州市| 南宫市| 田阳县|