ftp服务器配置参考:https://mp.csdn.net/mdeditor/97268639#
文件上传(两篇是连着的):
- https://blog.csdn.net/qq_40808344/article/details/86763529
- https://blog.csdn.net/qq_40808344/article/details/86763575
多文件上传:https://blog.csdn.net/u014104286/article/details/74906446
相关依赖
<!-- ftpclient -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.1</version>
</dependency>
前端
<form action="http://localhost:8080/files" method="post" enctype="multipart/form-data">
<input type="file" name="multipartFile">
<input type="file" name="multipartFile">
<input type="submit" value="登陆">
</form>
后端代码
//上传多文件
@RequestMapping(value = "files",method = RequestMethod.POST)
public void uploadMoreFile( MultipartFile[] multipartFile)
{
//指定存放上传文件的目录
String fileDir = "D:\\test";
File dir = new File(fileDir);
//判断目录是否存在,不存在则创建目录
if (!dir.exists()){
dir.mkdirs();
}
//生成新文件名,防止文件名重复而导致文件覆盖
//1、获取原文件后缀名 .img .jpg ....
for (int i = 0; i <multipartFile.length ; i++) {
String originalFileName = multipartFile[i].getOriginalFilename();
String suffix = originalFileName.substring(originalFileName.lastIndexOf('.'));
//2、使用UUID生成新文件名
String newFileName = UUID.randomUUID() + suffix;
//生成文件
// C:\ftpfile\img sdasdasd.jpg
File file = new File(dir, newFileName);
//传输内容
try {
multipartFile[i].transferTo(file);
System.out.println("上传文件成功!");
} catch (IOException e) {
System.out.println("上传文件失败!");
e.printStackTrace();
}
//至此,文件已经传到了程序运行的服务器上。
//上传至ftp服务器
//1、上传文件
if (uploadToFtp(file)){
System.out.println("上传至ftp服务器!");
}else {
System.out.println("上传至ftp服务器失败!");
}
//2、删除本地文件
// file.delete();
}
}
上传到ftp
private boolean uploadToFtp(File file){
FTPClient ftpClient = new FTPClient();
try {
//连接ftp服务器 参数填服务器的ip
ftpClient.connect("000.000.000.000");
//进行登录 参数分别为账号 密码
ftpClient.login("ftpuser","123");
//改变工作目录(按自己需要是否改变)
//只能选择local_root下已存在的目录
ftpClient.changeWorkingDirectory("images");
//设置文件类型为二进制文件
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//开启被动模式(按自己如何配置的ftp服务器来决定是否开启)
//ftpClient.enterLocalPassiveMode();
//上传文件 参数:上传后的文件名,输入流
ftpClient.storeFile(file.getName(), new FileInputStream(file));
ftpClient.disconnect();
System.out.println(file.getName());
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
有关上传文件的一些配置
spring:
servlet:
multipart:
enabled: true
file-size-threshold: 0B
location: #
max-file-size: 1MB
max-request-size: 10MB
resolve-lazily: false