ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

JAVA 上传文件到另一台远程服务器(包含搭建文件服务器 基于Linux)

2021-12-03 17:02:18  阅读:349  来源: 互联网

标签:文件 另一台 tomcat sftp sshSession 服务器 上传


1.首先搭建一个文件服务器,不管你是本地虚拟机镜像创建的服务器,还是买的云服务器,都适用。

1)先去下载一个tomcat的安装包,如果你下不到没关系,我有。
链接:https://pan.baidu.com/s/1Yd7kI3kIN3SuKQsIsEFgtA 
提取码:iyvs 
2)解压到你想要的文件夹下,修改web.xml文件。搜索到下图所展示的地方
修改成所示代码。然后启动tomcat。

在这里插入图片描述

别忘了关闭防护火墙。可以使用nginx做代理,我这里没有做代理,只是开放了端口。不建议这么做,被渗透风险极大。只适用于学习DEMO。

3)在webapp目录下新建个文件夹,我这里叫files,然后访问路径下拼上文件夹
路径,再次访问就会是下面展示的样子:

在这里插入图片描述

2.开始准备上传文件的代码

1.新建一个springboot项目 
2.除了常规web依赖 ,还需引入以下依赖
 		<dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>
3.直接贴工具类
public class UploadUtil {
    private static ChannelSftp sftp = null;
    /**
     * Description: 向FTP服务器上传文件
     * @param filename 上传到FTP服务器上的文件名
     * @param input    输入流
     * @return 成功返回true,否则返回false
     */
    public static boolean uploadFile(String filename, InputStream input) {
        boolean result = false;
        FTPClient ftp = new FTPClient();
        File file = null;
        try {
            JSch jsch = new JSch();
            //获取sshSession  账号-ip-端口
            Session sshSession = jsch.getSession(服务器用户名, 服务器IP, 端口号);
            //添加密码
            sshSession.setPassword(服务器密码);
            Properties sshConfig = new Properties();
            //严格主机密钥检查
            sshConfig.put("StrictHostKeyChecking", "no");
            sshSession.setConfig(sshConfig);
            //开启sshSession链接
            sshSession.connect();
            //获取sftp通道
            Channel channel = sshSession.openChannel("sftp");
            //开启
            channel.connect();
            sftp = (ChannelSftp) channel;
            //服务器路径
            file = new File("/usr/local/tomcat/apache-tomcat-9.0.39/webapps/files/");
            //设置为被动模式
            ftp.enterLocalPassiveMode();
            //设置上传文件的类型为二进制类型
            //进入到要上传的目录  然后上传文件
            sftp.cd("/usr/local/tomcat/apache-tomcat-9.0.39/webapps/files/");
            sftp.put(input, filename);
            input.close();
            result = true;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (ftp.isConnected()) {
                try {
                    ftp.disconnect();
                } catch (IOException ioe) {
                }
            }
        }
        return result;
    }

}

InputStream哪来的 ,参数类型是MultipartFile,file.getInputStream()
fileName 哪来的 ,file.getOriginalFilename();

有问题 评论区指教

标签:文件,另一台,tomcat,sftp,sshSession,服务器,上传
来源: https://blog.csdn.net/qq_19877501/article/details/121701834

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有