java上传文件到linux文件下

最近一个项目的需求是上传文件到图片服务器中,图片服务器是部署在linux上的一个tomcat容器,话不多说,直接上代码

一个工具类即可搞定:

package com.supermap.sbsm.util;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import org.apache.commons.net.ftp.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.util.Properties;
import java.io.IOException;

/**
 * @Author: zhangweixia
 * @Description: 创建服务器连接
 * @Date:Created in 10:29 2020/6/24
 * @Modified:
 */
public class FtpUtil {

    private static ChannelSftp sftp = null;


    /**
     * Description: 向FTP服务器上传文件
     * @param host FTP服务器ip
     * @param port FTP服务器端口
     * @param username FTP登录账号
     * @param password FTP登录密码
     * @param basePath FTP服务器基础目录,/home/ftpuser/images
     * @param filePath FTP服务器文件存放路径。例如分日期存放:/2018/05/28。文件的路径为basePath+filePath
     * @param filename 上传到FTP服务器上的文件名
     * @param input 输入流
     * @return 成功返回true,否则返回false
     */
    public static boolean uploadFile(String host, int port, String username, String password, String basePath,
                                     String filePath, 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(username, host, port);
            //添加密码
            sshSession.setPassword(password);
            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(basePath+filePath);
            //设置为被动模式
            ftp.enterLocalPassiveMode();
            //设置上传文件的类型为二进制类型
            //进入到要上传的目录  然后上传文件
            sftp.cd(basePath+filePath);
            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;
    }

}

 

boolean bh = FtpUtil.uploadFile("服务器IP",
        端口号,"服务器账号","服务器密码",
        "/data/wwes/sbsm/map/html/",FilePath,hFileName,hFileInputStream);

上述:basePath :服务器文件存放基本路径

          FilePath:基本路径后面动态拼接的文件路径(可根据需要,设置不同的文件存放到不同的文件夹下)

         hFileName:文件名称(可根据需要自定义命名文件)

        hFileInputStream:文件上传的输入流,通过 

InputStream hFileInputStream = hFile.getInputStream();获取

返回:true   文件上传成功,即可在linux上图片服务器中相应的目录下查看已上传的文件

别忘记点赞,谢谢!

你可能感兴趣的:(Java)