上传文件并转为json对象Demo(不需要存服务器)

不需要存服务器,因为存服务器会有多实例的问题,这次上传到服务器的A节点,下次请求到B节点会存在访问不到文件的问题,所以需要每次上传文件进行解析。
@ApiOperation("解析配置文件")
@PostMapping("/resolveProfile")
public Response resolveProfile(@RequestParam @ControllerLog(paramName = "配置文件", entityType = ConstLog.OPER_LOG_NAME_BY_ID.SOFTWARE) MultipartFile profile) {
    if (profile.isEmpty()) {
        return Response.fail(-1, "请检查文件内容");
    }
    try {
        Reader reader = new InputStreamReader(profile.getInputStream(), "utf-8");
        BufferedReader bReader = new BufferedReader(reader);
        StringBuilder sb = new StringBuilder();
        String temp;
        String resultString;
        while ((temp = bReader.readLine()) != null) {//逐行读取文件内容
            sb.append(temp);
        }
        bReader.close();
        resultString = sb.toString();
        PatchAcceptDTO patchAcceptDTO = JSON.parseObject(resultString, PatchAcceptDTO.class);
        if (patchAcceptDTO.getPatchConfig().size() != patchAcceptDTO.getPatchTypeConfig().size()) {
            return Response.fail(-1, "补丁类型和补丁详情个数不匹配,请检查文件内容");
        }
        //hasCheck  1-已校验,2-未校验
        if (patchAcceptDTO.getHasCheck() == 1) {
            return Response.success("解析配置文件成功");
        } else {
            return Response.fail(-1, "未运行工具进行本地校验,请检查文件内容");
        }
    } catch (Exception e) {
        logger.info("解析配置文件错误", e);
        return Response.fail(-1, "解析配置文件错误");
    }
}
import org.apache.commons.io.IOUtils;

其实IOUtils这个包已经封装了原生的读取方法,所以可以用一行代码代替

String content = IOUtils.toString(profile.getInputStream(), "utf-8");

你可能感兴趣的:(常用工具类Demo)