JAVA - FTP上传文件
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