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

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

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

JAVA 上传文件到另一台远程服务器(包含搭建文件服务器 基于Linux)_第1张图片

别忘了关闭防护火墙。可以使用nginx做代理,我这里没有做代理,只是开放了端口。不建议这么做,被渗透风险极大。只适用于学习DEMO。
3)在webapp目录下新建个文件夹,我这里叫files,然后访问路径下拼上文件夹
路径,再次访问就会是下面展示的样子:

JAVA 上传文件到另一台远程服务器(包含搭建文件服务器 基于Linux)_第2张图片

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

1.新建一个springboot项目 
2.除了常规web依赖 ,还需引入以下依赖
 		<dependency>
            <groupId>commons-netgroupId>
            <artifactId>commons-netartifactId>
            <version>3.6version>
        dependency>
        <dependency>
            <groupId>com.jcraftgroupId>
            <artifactId>jschartifactId>
            <version>0.1.54version>
        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();

有问题 评论区指教

你可能感兴趣的:(Java,服务器,java,linux)