亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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工程部分

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

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

jsch 是一個(gè)用Java編寫的SSH2協(xié)議庫,它可以用來實(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ù)沒有運(yùn)行,可以使用以下命令手動(dòng)啟動(dòng)它:

sudo systemctl start ssh

配置防火墻

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

sudo ufw allow 22/tcp

通過以上步驟應(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)文章

  • 如何獲得spring上下文的方法總結(jié)

    如何獲得spring上下文的方法總結(jié)

    這篇文章主要介紹了如何獲得spring上下文的方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java狀態(tài)機(jī)的一種優(yōu)雅寫法分享

    Java狀態(tài)機(jī)的一種優(yōu)雅寫法分享

    狀態(tài)機(jī)是一種數(shù)學(xué)模型,對(duì)于我們業(yè)務(wù)實(shí)現(xiàn)有很大的幫助。我們可以用非常多的方法實(shí)現(xiàn)狀態(tài)機(jī),這篇文章就來介紹一個(gè)狀態(tài)機(jī)優(yōu)雅的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2023-04-04
  • Java爬蟲(Jsoup與WebDriver)的使用

    Java爬蟲(Jsoup與WebDriver)的使用

    這篇文章主要介紹了Java爬蟲(Jsoup與WebDriver)的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java?Servlet實(shí)現(xiàn)表白墻的代碼實(shí)例

    Java?Servlet實(shí)現(xiàn)表白墻的代碼實(shí)例

    最近用Servlet做了個(gè)小項(xiàng)目,分享給大家,下面這篇文章主要給大家介紹了關(guān)于Java?Servlet實(shí)現(xiàn)表白墻的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 操作系統(tǒng)的內(nèi)核態(tài)和用戶態(tài)場(chǎng)景詳解

    操作系統(tǒng)的內(nèi)核態(tài)和用戶態(tài)場(chǎng)景詳解

    這篇文章主要介紹了操作系統(tǒng)的內(nèi)核態(tài)和用戶態(tài)場(chǎng)景,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • DynamicDataSource怎樣解決多數(shù)據(jù)源的事務(wù)問題

    DynamicDataSource怎樣解決多數(shù)據(jù)源的事務(wù)問題

    這篇文章主要介紹了DynamicDataSource怎樣解決多數(shù)據(jù)源的事務(wù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • spring?jpa?審計(jì)功能自定義填充字段方式

    spring?jpa?審計(jì)功能自定義填充字段方式

    這篇文章主要介紹了spring?jpa審計(jì)功能自定義填充字段方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java?面向?qū)ο蟠a塊及不同位置對(duì)屬性賦值的執(zhí)行順序

    java?面向?qū)ο蟠a塊及不同位置對(duì)屬性賦值的執(zhí)行順序

    這篇文章主要介紹了java面向?qū)ο蟠a塊及不同位置對(duì)屬性賦值的執(zhí)行順序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Java讀寫鎖ReadWriteLock的創(chuàng)建使用及測(cè)試分析示例詳解

    Java讀寫鎖ReadWriteLock的創(chuàng)建使用及測(cè)試分析示例詳解

    這篇文章主要為大家介紹了Java讀寫鎖ReadWriteLock的創(chuàng)建使用及測(cè)試分析示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • maven多模塊依賴版本不一致問題解決

    maven多模塊依賴版本不一致問題解決

    本文主要介紹了maven多模塊依賴版本不一致問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論