国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java上傳文件到指定服務(wù)器

這篇具有很好參考價(jià)值的文章主要介紹了java上傳文件到指定服務(wù)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

首先要知道服務(wù)器的用戶名和密碼。

注意:一般情況,如果不是強(qiáng)制要求,盡量不要將文件上傳到服務(wù)器

步驟:

1.導(dǎo)入依賴

<!--圖片上傳到服務(wù)器需要的依賴-->
? ? ? ? <dependency>
? ? ? ? ? ? <groupId>com.jcraft</groupId>
? ? ? ? ? ? <artifactId>jsch</artifactId>
? ? ? ? ? ? <version>0.1.54</version>
? ? ? ? </dependency>

2.編寫(xiě)配置文件application.yml

customize:
?? ?remoteServer:
?? ? ? ?sftp:
?? ? ? ? ?SFTP_httpBaseUrl: /images/ # 訪問(wèn)附件的地址添加 一個(gè)映射 如 ?/images/ -》 /server-images/
?? ? ? ? ?SFTP_httpPort: 80 # 公網(wǎng)訪問(wèn)的端口
?? ? ? ? ?SFTP_directory: /server-images/ #主機(jī)保存附件目錄
?? ? ? ? ?SFTP_host: 192.168.1.10 #主機(jī)
?? ? ? ? ?SFTP_port: 22 #端口號(hào)
?? ? ? ? ?SFTP_username: root #用戶名
?? ? ? ? ?SFTP_password: 123456 #密碼

?3.編寫(xiě)文件上傳所需要的工具類

import com.jcraft.jsch.*;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

import java.time.LocalDate;
import java.util.Properties;
import java.util.UUID;


/**
?* 類描述:
?* 上傳文件到服務(wù)器的 工具類
?*
?* @ClassName SFTPUtil
?* @Author msi
?* @Date 2020/9/2 23:29
?* @Version 1.0
?*/
@Component
public class SFTPUtil {

? ? /**
? ? ?* 返回公網(wǎng)訪問(wèn)的地址前綴
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_httpBaseUrl}")
? ? protected String baseUrl;
? ? /**
? ? ?* 公網(wǎng)訪問(wèn)的端口
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_httpPort}")
? ? protected int port;
? ? /**
? ? ?* 主機(jī)保存的目錄
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_directory}")
? ? protected String directory;
? ? /**
? ? ?* 主機(jī)的IP
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_host}")
? ? protected String host;
? ? /**
? ? ?* ssh端口
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_port}")
? ? protected int sshPort;
? ? /**
? ? ?* 用戶名
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_username}")
? ? protected String username;
? ? /**
? ? ?* 密碼
? ? ?*/
? ? @Value("${customize.remoteServer.sftp.SFTP_password}")
? ? protected String password;

? ? /**
? ? ?* 上傳多文件到指定遠(yuǎn)程主機(jī)
? ? ?* @param files ? ? 文件數(shù)組
? ? ?* @return list?
? ? ?*/
? ? public List<String> uploadMultipartFilesToServer(MultipartFile[] files) throws SftpException, JSchException, IOException {
? ? ? ? List<String> list = new ArrayList<>();
? ? ? ? ChannelSftp sftp = null;
? ? ? ? Session session = null;
? ? ? ? sftp = this.connect(this.host, this.sshPort, this.username, this.password);
? ? ? ? session = sftp.getSession();
? ? ? ? for (int i = 0; i < files.length; i++) {
? ? ? ? ? ? String originalFilename = files[i].getOriginalFilename();
? ? ? ? ? ? // 生成文件夾名 yyyy-mm
? ? ? ? ? ? String relativePath = new StringBuilder().append(LocalDate.now().getYear())
? ? ? ? ? ? ? ? ? ? .append("-").append(LocalDate.now().getMonthValue()).toString();

? ? ? ? ? ? String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase();

? ? ? ? ? ? int lastIndex = originalFilename.lastIndexOf(".");
? ? ? ? ? ? String fileSuffix = originalFilename.substring(lastIndex);
? ? ? ? ? ? String filePrefix = originalFilename.substring(0, lastIndex);
? ? ? ? ? ? String fileName = new StringBuilder().append(filePrefix).append(uuid).append(fileSuffix).toString();

? ? ? ? ? ? // 文件上層目錄
? ? ? ? ? ? String directory = this.directory + relativePath;
? ? ? ? ? ? // 創(chuàng)建文件夾
? ? ? ? ? ? this.createDir(directory, sftp);
? ? ? ? ? ? // 進(jìn)入文件夾內(nèi)
? ? ? ? ? ? sftp.cd(directory);
? ? ? ? ? ? // 創(chuàng)建文件
? ? ? ? ? ? sftp.put(files[0].getInputStream(), fileName);
? ? ? ? ? ? // 拼接返回格式
? ? ? ? ? ? String s = new StringBuilder("http://").append(this.host).append(":").append(this.port)
? ? ? ? ? ? ? ? ? ? .append(this.baseUrl).append(relativePath).append("/").append(fileName).toString();

? ? ? ? ? ? list.add(s);
? ? ? ? }
? ? ? ? // 關(guān)掉連接
? ? ? ? sftp.disconnect();
? ? ? ? sftp.getSession().disconnect();

? ? ? ? return list;
? ? }

? ? /**
? ? ?* 建立連接
? ? ?* @param host ?主機(jī)
? ? ?* @param port ?端口
? ? ?* @param username ?用戶名
? ? ?* @param password ?密碼
? ? ?* @return
? ? ?*/
? ? public ChannelSftp connect(String host, int port, String username,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?String password) {
? ? ? ? ChannelSftp sftp = null;
? ? ? ? try {
? ? ? ? ? ? JSch jsch = new JSch();
? ? ? ? ? ? jsch.getSession(username, host, port);
? ? ? ? ? ? Session sshSession = jsch.getSession(username, host, port);
? ? ? ? ? ? sshSession.setPassword(password);
? ? ? ? ? ? Properties sshConfig = new Properties();
? ? ? ? ? ? sshConfig.put("StrictHostKeyChecking", "no");
? ? ? ? ? ? sshSession.setConfig(sshConfig);
? ? ? ? ? ? sshSession.connect();
? ? ? ? ? ? Channel channel = sshSession.openChannel("sftp");
? ? ? ? ? ? channel.connect();
? ? ? ? ? ? sftp = (ChannelSftp) channel;
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? return sftp;
? ? }

? ? /**
? ? ?* 創(chuàng)建目錄
? ? ?*
? ? ?*/
? ? public void createDir(String createpath, ChannelSftp sftp) {
? ? ? ? try {
? ? ? ? ? ? if (isDirExist(sftp, createpath)) {
? ? ? ? ? ? ? ? sftp.cd(createpath);
? ? ? ? ? ? }
? ? ? ? ? ? String pathArry[] = createpath.split("/");
? ? ? ? ? ? StringBuffer filePath = new StringBuffer("/");
? ? ? ? ? ? // 循環(huán)創(chuàng)建目錄
? ? ? ? ? ? for (String path : pathArry) {
? ? ? ? ? ? ? ? if (path.equals("")) {
? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? filePath.append(path + "/");
? ? ? ? ? ? ? ? if (isDirExist(sftp, filePath.toString())) {
? ? ? ? ? ? ? ? ? ? sftp.cd(filePath.toString());
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? // 建立目錄
? ? ? ? ? ? ? ? ? ? sftp.mkdir(filePath.toString());
? ? ? ? ? ? ? ? ? ? // 進(jìn)入并設(shè)置為當(dāng)前目錄
? ? ? ? ? ? ? ? ? ? sftp.cd(filePath.toString());
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? sftp.cd(createpath);
? ? ? ? } catch (SftpException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }


? ? /**
? ? ?* 判斷目錄是否存在
? ? ?*/
? ? public boolean isDirExist(ChannelSftp sftp, String directory) {
? ? ? ? boolean isDirExistFlag = false;
? ? ? ? try {
? ? ? ? ? ? SftpATTRS sftpATTRS = sftp.lstat(directory);
? ? ? ? ? ? isDirExistFlag = true;
? ? ? ? ? ? return sftpATTRS.isDir();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? if (e.getMessage().toLowerCase().equals("no such file")) {
? ? ? ? ? ? ? ? isDirExistFlag = false;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return isDirExistFlag;
? ? }
}
?

4.編寫(xiě)對(duì)應(yīng)controller進(jìn)行調(diào)試

?@Autowired
? ? private UpdateFileUtil sftpUtil;
? ? /**
? ? ?* 上傳文件到服務(wù)器
? ? ?*
? ? ?* @param files 圖片
? ? ?* @return
? ? ?*/
? ? @PostMapping("/file")
? ? public Result<List<String>> file(MultipartFile[] files) throws Exception {
? ? ? ? List<String> paths = sftpUtil.uploadMultipartFilesToServer(files);
? ? ? ? return Result.ofSuccess(paths);
? ? }文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812098.html

到了這里,關(guān)于java上傳文件到指定服務(wù)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 上傳文件到MinIO服務(wù)器上

    Java 上傳文件到MinIO服務(wù)器上

    一、MinIO配置 主界面: 2.創(chuàng)建桶的文件路徑 你可以設(shè)置任意想要配置的路徑 ?3.管理桶權(quán)限 這里Prefix寫(xiě) * 是為了匹配所有請(qǐng)求路徑 Access: readonly就可以通過(guò)url訪問(wèn)圖片了。 二、SpringBoot Maven項(xiàng)目: 導(dǎo)入坐標(biāo):? 三、配置application.yml文件 四、編寫(xiě)讀取配置類 五、創(chuàng)建工具類 六

    2024年02月08日
    瀏覽(23)
  • Java實(shí)現(xiàn)文件上傳到ftp服務(wù)器

    Java實(shí)現(xiàn)文件上傳到ftp服務(wù)器

    文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在網(wǎng)絡(luò)上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,它工作在 OSI 模型的第七層, TCP 模型的第四層, 即應(yīng)用層, 使用 TCP 傳輸而不是 UDP, 客戶在和服務(wù)器建立連接前要經(jīng)過(guò)一個(gè)“三次握手”的過(guò)程, 保證客戶與服務(wù)器之間的連接是可靠的

    2024年02月14日
    瀏覽(24)
  • Java從ftp服務(wù)器上傳與下載文件

    業(yè)務(wù)需要從ftp服務(wù)器上上傳、下載、刪除文件等功能,通過(guò)查閱資料及手動(dòng)敲打代碼,實(shí)現(xiàn)了操作ftp的基本功能,有需求的小伙伴可以看看具體的實(shí)現(xiàn)過(guò)程。 摘自百度百科:文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)是用于在 網(wǎng)絡(luò) 上進(jìn)行文件傳輸?shù)囊惶讟?biāo)準(zhǔn)協(xié)議,F(xiàn)TP允許用戶以

    2024年02月07日
    瀏覽(34)
  • Java從sftp服務(wù)器上傳與下載文件

    業(yè)務(wù)需要從sftp服務(wù)器上上傳、下載、刪除文件等功能,通過(guò)查閱資料及手動(dòng)敲打代碼,實(shí)現(xiàn)了操作sftp的基本功能,有需求的小伙伴可以看看具體的實(shí)現(xiàn)過(guò)程。 摘自百度百科:SSH文件傳輸協(xié)議,是一種數(shù)據(jù)流鏈接,提供文件訪問(wèn)、傳輸和管理功能的網(wǎng)絡(luò)傳輸協(xié)議。 SFTP允許用

    2024年02月11日
    瀏覽(33)
  • java通過(guò)FTP跨服務(wù)器動(dòng)態(tài)監(jiān)聽(tīng)讀取指定目錄下文件數(shù)據(jù)

    java通過(guò)FTP跨服務(wù)器動(dòng)態(tài)監(jiān)聽(tīng)讀取指定目錄下文件數(shù)據(jù)

    1、文件數(shù)據(jù)在A服務(wù)器(windows)(不定期在指定目錄下生成),項(xiàng)目應(yīng)用部署在B服務(wù)器(Linux); 2、項(xiàng)目應(yīng)用在B服務(wù)器,監(jiān)聽(tīng)A服務(wù)器指定目錄,有新生成文件,進(jìn)行讀取文件信息,持久化數(shù)據(jù); 3、提供兩塊內(nèi)容,第一安裝windows FTP服務(wù);第二項(xiàng)目源碼,希望可以幫助到你

    2024年02月03日
    瀏覽(32)
  • Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過(guò)url訪問(wèn)

    Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過(guò)url訪問(wèn)

    Java實(shí)現(xiàn)文件上傳到服務(wù)器本地,并通過(guò)url訪問(wèn) 有個(gè)需求,前端上傳文件,需要用開(kāi)關(guān)的方式同時(shí)支持上傳七牛和服務(wù)器本地,方便不同的用戶需求合理分配資源。本篇主要介紹文件上傳到本地,然后通過(guò)url訪問(wèn)。 首先想到的就是可以通過(guò)SpringBoot通常訪問(wèn)靜態(tài)資源的方式,當(dāng)

    2024年02月03日
    瀏覽(26)
  • Java實(shí)現(xiàn)以form-data形式文件上傳到服務(wù)器

    Java實(shí)現(xiàn)以form-data形式文件上傳到服務(wù)器

    2024年02月13日
    瀏覽(21)
  • Ansible copy模塊 復(fù)制文件使用 主服務(wù)器 給副服務(wù)器 復(fù)制文件使用 指定文件權(quán)限 覆蓋備份等

    Ansible copy模塊 復(fù)制文件使用 主服務(wù)器 給副服務(wù)器 復(fù)制文件使用 指定文件權(quán)限 覆蓋備份等

    這個(gè)模塊用于將文件復(fù)制到遠(yuǎn)程主機(jī),同時(shí)支持給定內(nèi)容生成文件和修改權(quán)限等。 其相關(guān)選項(xiàng)如下: src #被復(fù)制到遠(yuǎn)程主機(jī)的本地文件??梢允墙^對(duì)路徑,也可以是相對(duì)路徑。如果路徑是一個(gè)目錄,則會(huì)遞歸復(fù)制,用法類似于\\\"rsync\\\" content #用于替換\\\"src\\\",可以直接指定文件的

    2024年04月14日
    瀏覽(21)
  • shell腳本實(shí)現(xiàn)刪除服務(wù)器指定目錄下文件方法

    上述腳本中,find 命令用于查找指定目錄下4天以前的文件,并將其刪除。其中,-type f 表示只查找普通文件,不包括目錄和符號(hào)鏈接等其他類型的文件;-mtime +3 表示查找修改時(shí)間早于3天前的文件;-delete 表示刪除查找到的文件。 腳本中的 $folder_path 可以替換為實(shí)際的目錄路徑

    2023年04月19日
    瀏覽(23)
  • MacOS VSCode 配置遠(yuǎn)程服務(wù)器ssh remote鏈接,并上傳文件文件服務(wù)器

    MacOS VSCode 配置遠(yuǎn)程服務(wù)器ssh remote鏈接,并上傳文件文件服務(wù)器

    環(huán)境: MacOS VSCode ssh remote 1. VSCode安裝插件 2. 配置ssh remote鏈接 配置完保存; 3. 在ssh remote可以查看到配置好的遠(yuǎn)程連接 右側(cè)兩個(gè)一個(gè)是在當(dāng)前窗口打開(kāi)遠(yuǎn)程鏈接,一個(gè)是在新窗口打開(kāi)遠(yuǎn)程連接,選擇一個(gè)即可,我傾向于選擇一個(gè)新窗口。 此時(shí),如果遠(yuǎn)程文件夾是新創(chuàng)建的話

    2024年02月03日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包