controller层: 通过文件流的方式 读取 前端上传的文件 MultipartFile
上传文件:utf-8编码的csv文件
@ApiOperation(value = "导入文件")
@RequestMapping(value = "/updateFieldMapFromCsvfile", method = RequestMethod.POST)
public BaseResult updateFieldMapFromCsvfile(@RequestParam("file") MultipartFile multipartFile) throws IOException, ParseException {
BaseResult baseResult = new BaseResult();
BaseController.execute(null, new ControllerCallback<Long>() {
@Override
public void check() {
}
@Override
public Long execute() throws IOException {
// 更新
return nodeService.updateFieldMapFromCsvfile(multipartFile);
}
}, baseResult);
return baseResult;
}
实现层:
public long updateFieldMapFromCsvfile(MultipartFile multipartFile) throws IOException {
Reader reader = new InputStreamReader(multipartFile.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(reader);
br.readLine();//br是迭代器类型的,每readline一次,行数指向next,用于过滤第0行标题
String line ;
while ((line = br.readLine()) != null) {
SqDataNodeFieldMapDO eachData = new SqDataNodeFieldMapDO();
String item[] = line.split(",");
eachData.setId(Long.parseLong(item[0]));
eachData.setOutputNode(item[3]);
eachData.setOutputField(item[4]);
eachData.setOutputValueType(item[5]);
eachData.setSourceNode(item[6]);
eachData.setSourceField(item[7]);
eachData.setSourceValueType(item[8]);
eachData.setLastModer(item[9]);
eachData.setLinkCode(item[10]);
eachData.setBizCode(item[11]);
eachData.setValueUdf(item[12]);
eachData.setValueCaliber(item[13]);
fieldMapConfigService.updateFieldMapFromCsv(eachData);//更新数据库
}
return 0;
}
postman调用调试