在Spring中使用MultipartFile接收文件
/**
* 获取文件类型 .getContentType() image/jpeg
* 获取函数原始名称 .getOriginalFilename() 1640016160965.jpg
* 获取文件大小 .getSize() 14209
* 将文件保存到dest指定的位置 transferTo(File dest)
*/
import java.io.File;
import org.springframework.web.multipart.MultipartFile;
import cn.hutool.core.lang.UUID;
/**
* 处理文件或者图片信息 getInstance方法 实例化对象
*
* @author Windows
*
*/
public class UploadTran {
private volatile static UploadTran fileTran;
public UploadTran() {
}
public static UploadTran getInstance() {
if (fileTran == null) {
synchronized (UploadTran.class) {
if (fileTran == null) {
fileTran = new UploadTran();
}
}
}
return fileTran;
}
public String transformatiom(MultipartFile file,String uploadPath) {
// 随机生产文件名 保留文件后缀名
String fileName = file.getOriginalFilename();
// 获取后缀名
String str = fileName.substring(fileName.lastIndexOf("."));
// 随机生产文件名
String newFile = UUID.randomUUID().toString() + str;
String path = uploadPath + newFile;
System.out.println(path);
File dest = new File(path);
// 检测是否存在目录
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();// 新建文件夹
}
try {
file.transferTo(dest);
} catch (Exception e) {
e.printStackTrace();
}
return newFile;
}
}
使用FTP上传文件
引入依赖
<!-- hutool工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.16</version>
</dependency>
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
package com.test.controller;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import cn.hutool.extra.ftp.Ftp;
import cn.hutool.core.io.FileUtil;
@RestController
public class FPTController {
//读取配置项的内容
@Value("${web.file-path}")
private String filePath;
@PostMapping("/FPTUpload")
public Object FPTUpload(@RequestParam("myFile") MultipartFile myFile) throws IOException {
// 匿名登录(无需帐号密码的FTP服务器)
Ftp ftp = new Ftp("localhost", 21, "ftp", "123");
//规划路径
// 规划文件存放的路径
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MMdd");
String newfilePath = sdf.format(new Date()) ;
//ftp目录
String ftpPath ="/"+newfilePath;
//源文件目录
String OriginalFilePath =filePath+myFile.getOriginalFilename();
// 上传本地文件
ftp.upload(ftpPath, FileUtil.file(OriginalFilePath));
// 关闭连接
ftp.close();
return "ok";
}
}
在配置文件中:
测试: