1.7-15之前旧的向ftp上传文件的方法,有写临时文件步骤的
/**
* Description: 向FTP服务器上传文件
* @param ftpPath FTP服务器文件存放路径
* @param multipartFile 上传到FTP服务器上的文件
* @return 成功返回文件名,比如 uuid.jpg,失败返回null
*/
/* public String uploadFileToFtpService(String ftpPath, MultipartFile multipartFile) {
//创建ftp客户端
FTPClient ftp = new FTPClient();
// 返回的文件名
String fileName = null;
try {
//FTP服务器端口,默认21,使用默认端口可以不写
ftp.connect(ftpHost,Integer.parseInt(ftpPort));// 连接FTP服务器
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(ftpUsername, ftpPassword);// 登录
if (FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
logger.info("登录成功");
ftp.setControlEncoding(LOCAL_CHARSET);
ftp.enterLocalPassiveMode();//设置被动模式
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//设置传输模式,一定要设置二进制传输格式
}else{
//登录失败返回Null
ftp.disconnect();
return null;
}
*//*该部分为逐级创建*//*
String[] split = ftpPath.split("/");
for (String str : split) {
if(StringUtils.isBlank(str)) {
continue;
}
if (!ftp.changeWorkingDirectory(str)) {//注意这步必须加上进入目录,否则当目录不存在时候只创建目录不进入则文件写入有问题
//防止中文编码导致目录找不到
String directory = new String(str.getBytes(LOCAL_CHARSET),DEFAULT_CHARSET);
//目录不存在则创建目录
ftp.makeDirectory(directory);
//更换目录到当前目录,否则目录不存在时只是创建目录而不能写入文件到该目录
ftp.changeWorkingDirectory(directory);
}
}
//截取文件格式后缀
String fileSuffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf(".") + 1);
//uuid.格式 是文件名
fileName =UUID.randomUUID() + "."+fileSuffix;
//选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法
File tempFile = File.createTempFile(String.valueOf(UUID.randomUUID()), fileSuffix);
multipartFile.transferTo(tempFile);
//退出虚拟机时删除生成的临时文件
tempFile.deleteOnExit();
logger.info("临时文件路径: {}",tempFile.getAbsolutePath());
//文件以流形式二进制传输到ftp服务器
FileInputStream input = new FileInputStream(tempFile);
//
Boolean flag = ftp.storeFile(new String(fileName.getBytes(LOCAL_CHARSET),DEFAULT_CHARSET), input);
input.close();
ftp.logout();
if(!flag){
//文件上传失败,可能是权限,防火墙等问题
logger.info("文件上传失败");
return null;
}
} catch (IOException e) {
logger.error(e.getMessage());
return null;
} finally {
if (ftp.isConnected()) {
try {
ftp.disconnect();
} catch (IOException ioe) {
}
}
}
return fileName;
}*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界