JAVA - FTP上传文件

java

FTP上传文件工具类

package org.jeecg.modules.system.util;

import java.io.*;

import java.net.URL;

import java.net.URLConnection;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Properties;

import java.util.Vector;

import com.jcraft.jsch.*;

public class FtpUtils {

/**

* 链接sftp

* @param host 主机

* @param port 端口

* @param username 用户名

* @param password 密码

* @return

*/

public static ChannelSftp connect(String host, int port, String username,String password) throws JSchException {

ChannelSftp sftp = null;

JSch jsch = new JSch();

jsch.getSession(username, host, port);

Session sshSession = jsch.getSession(username, host, port);

System.out.println("Session创建成功");

sshSession.setPassword(password);

System.out.println("密码输入成功");

Properties sshConfig = new Properties();

sshConfig.put("StrictHostKeyChecking", "no");

System.out.println("链接参数设置成功");

sshSession.setConfig(sshConfig);

sshSession.connect();

System.out.println("Session已连接");

Channel channel = sshSession.openChannel("sftp");

channel.connect();

sftp = (ChannelSftp) channel;

System.out.println("连接到主机" + host + ".");

return sftp;

}

/**

* 文件重命名

* @param directory 目录

* @param oldname 旧文件名

* @param newname 新文件名

* @param sftp

*/

public static void renameFile(String directory, String oldname, String newname,

ChannelSftp sftp) {

try {

sftp.cd(directory);

sftp.rename(oldname, newname);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 文件上传

* @param directory 目录

* @param uploadFile 要上传的文件名

* @param sftp

*/

public static void upload(String directory, String uploadFile, ChannelSftp sftp) throws SftpException, FileNotFoundException {

//url路径上传

// URL url = new URL(uploadFile);

// URLConnection connection = url.openConnection();

// String sss = url.getFile();

sftp.cd(directory);

File file = new File(uploadFile);

Date dNow = new Date();

SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddhhmmss");

sftp.put(new FileInputStream(file), ft.format(dNow) + file.getName());

// sftp.put(connection.getInputStream(), file.getName());

}

public static void upload(String directory,String sftpFileName,InputStream input, ChannelSftp sftp) throws SftpException{

try {

sftp.cd(directory);

} catch (Exception e) {

}

sftp.put(input, sftpFileName);

}

/**

* 文件下载

* @param directory 目录

* @param downloadFile 要下载文件名

* @param saveFile 保持的文件名

* @param sftp

*/

public static void download(String directory, String downloadFile,

String saveFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

File file = new File(saveFile);

sftp.get(downloadFile, new FileOutputStream(file));

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 文件删除

* @param directory 目录

* @param deleteFile 要删除的文件名

* @param sftp

*/

public static void delete(String directory, String deleteFile, ChannelSftp sftp) {

try {

sftp.cd(directory);

sftp.rm(deleteFile);

System.out.println("删除成功");

} catch (Exception e) {

System.out.println("删除失败");

e.printStackTrace();

}

}

/**

* 列出目录下的文件

* @param directory 目录

* @param sftp

* @return

* @throws SftpException

*/

public static Vector listFiles(String directory, ChannelSftp sftp)

throws SftpException {

return sftp.ls(directory);

}

//批量删除文件

public static void delete(String directory, String[] fileNames, ChannelSftp aa) {

for (String fileName : fileNames) {

delete(directory, fileName, aa);

}

}

/**

* 创建目录文件夹

* @param directory 要创建文件夹的位置路径

* @param fileName 要创建文件夹的名称

* @param sftp sftp连接

*/

public static void mkdir(String directory,String fileName,ChannelSftp sftp){

try {

sftp.cd(directory);

sftp.mkdir(fileName);

System.out.println("文件夹创建成功");

} catch (Exception e) {

System.out.println("文件夹创建失败");

e.printStackTrace();

}

}

public static void main(String[] args) throws Exception{

Date dNow = new Date();

SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddhhmmss");

String str = ft.format(dNow);

System.out.println(str);

// ChannelSftp cftp=FtpUtils.connect("101.32.253.149",22, "root", "Happywork666");

// FtpUtils.upload("/usr", "https://cdn.starmini.jp/mini-program-starpay-cloud-s3/2021/06/17/1165ddd7-6f06-401b-b747-d4c0e8389b1d.zip", cftp);

}

}

参数实体

package org.jeecg.modules.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import com.baomidou.mybatisplus.annotation.TableLogic;

import com.baomidou.mybatisplus.annotation.TableName;

import com.fasterxml.jackson.annotation.JsonFormat;

import io.swagger.annotations.ApiModel;

import io.swagger.annotations.ApiModelProperty;

import lombok.Data;

import lombok.EqualsAndHashCode;

import lombok.experimental.Accessors;

import org.jeecgframework.poi.excel.annotation.Excel;

import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;

import java.util.Date;

import java.util.List;

/**

* @Description: 邮件通知配置

* @Author: jeecg-boot

* @Date: 2021-03-10

* @Version: V1.0

*/

@Data

@Accessors(chain = true)

@EqualsAndHashCode(callSuper = false)

@ApiModel(value="gaia_ftp_config对象", description="ftp通知配置")

public class GaiaFtpConfig implements Serializable {

private static final long serialVersionUID = 1L;

/**FTP服务器地址*/

@Excel(name = "FTP服务器地址", width = 15)

@ApiModelProperty(value = "FTP服务器地址")

private String host;

/**FTP服务器端口*/

@Excel(name = "FTP服务器端口", width = 15)

@ApiModelProperty(value = "FTP服务器端口")

private Integer port;

/**ftp用户名*/

@Excel(name = "ftp用户名", width = 15)

@ApiModelProperty(value = "ftp用户名")

private String username;

/**ftp密码*/

@Excel(name = "ftp密码", width = 15)

@ApiModelProperty(value = "ftp密码")

private String password;

/**存储目录*/

@Excel(name = "存储目录", width = 15)

@ApiModelProperty(value = "存储目录")

private String directory;

/**文件路径*/

@Excel(name = "文件路径", width = 15)

@ApiModelProperty(value = "文件路径")

private List<String> attachment;

}

 

以上是 JAVA - FTP上传文件 的全部内容, 来源链接: utcz.com/z/393057.html

回到顶部