1、csv文件:
2、pom.xml文件引入hutool依赖:
3、项目结构
3-1:ZZUploadController代码
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.text.csv.CsvReader;
import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.CharsetUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.project.zzupload.po.ZZUploadPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.List;
@RestController
@RequestMapping("/zzupload")
@Slf4j
public class ZZUploadController {
/**
* @param file
* @return
*/
@RequestMapping(value = "/import", method = RequestMethod.POST)
public AjaxResult importData1(MultipartFile file) {
CsvReader csvReader = CsvUtil.getReader();
File f = this.multiToFile(file); //MultipartFile转file
//直接使用utf8编码:ResourceUtil.getUtf8Reader(f.getPath())
//使用GBK编码
List<ZZUploadPO> rows = csvReader.read(ResourceUtil.getReader(f.getPath(), CharsetUtil.CHARSET_GBK), ZZUploadPO.class);
return AjaxResult.success(rows);
}
/**
* MultipartFile转file
* @param multipartFile
* @return
*/
private File multiToFile(MultipartFile multipartFile) {
//选择用缓冲区来实现这个转换即使用java 创建的临时文件 使用 MultipartFile.transferto()方法 。
File file = null;
try {
String originalFilename = multipartFile.getOriginalFilename();
String[] filename = originalFilename.split("\\.");
file=File.createTempFile(filename[0], filename[1]);
multipartFile.transferTo(file);
file.deleteOnExit();
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage());
}
return file;
}
}
3-2 ZZUploadPO代码
import cn.hutool.core.annotation.Alias;
import lombok.Data;
@Data
public class ZZUploadPO {
@Alias("姓名") //使用别名
private String name;
private String age;
}
4、测试(使用postman测试接口)
5、注意
若直接使用uft8编码解析,中文会乱码