0


sprintboot文件上传XML文件并解析

sprintboot文件上传XML文件并解析


这里只有读取上传的XML并针对上传的【MultipartFile】转换成对应的【File】文件进行后续操作。

环境:

系统环境:win10

开发工具:IntelliJ IDEA 2021.3.2

测试工具:Postman

注解:

@RestController:将@ResponseBody与@Controller合并成了一个注解来用。

@CrossOrigin:支持跨域。

@SpringBootApplication:设置启动项

端口号设置:server.port=8080

pom.xml:

这里用到了解析xml

        <dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>
        <dependency>
            <groupId>jaxen</groupId>
            <artifactId>jaxen</artifactId>
            <version>1.1.1</version>
        </dependency>

文件操作,所以需要将上传的【MultipartFile】类型的对象转换成【File】,这里单独添加了一个方法。

这里留了注释,可以直接使用,没什么好解释的。

/**
 * 将MultipartFile对象转换成File文件
 * @param multipartFile
 * @return
 */
public static File MultipartFileToFile(MultipartFile multipartFile) {
    File file = null;
    //判断是否为null
    if (multipartFile.equals("") || multipartFile.getSize() <= 0) {
        return file;
    }
    //MultipartFile转换为File
    InputStream ins = null;
    OutputStream os = null;
    try {
        ins = multipartFile.getInputStream();
        file = new File(multipartFile.getOriginalFilename());
        os = new FileOutputStream(file);
        int bytesRead = 0;
        byte[] buffer = new byte[8192];
        while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
            os.write(buffer, 0, bytesRead);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (os != null) {
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (ins != null) {
            try {
                ins.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return file;
}

测试编码:

@PostMapping(value = "/api/Index")
public Object Index(MultipartFile files) {
    if (files.getSize() == 0) {
        return new ERROR("格式化失败", null);
    }
    Document document = null;
    SAXReader saxReader = new SAXReader();
    try {
        document = saxReader.read(MultipartFileToFile(files));
        Element root = document.getRootElement();
        System.out.println(root);
        return new SUCCESS("格式化成功", root);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return new ERROR("数据结构异常", null);

返回对象

class BackResult {
    public BackResult(String message, Object result) {
        this.state = true;
        this.message = message;
        this.result = result;
    }

    public boolean isState() {
        return state;
    }

    public void setState(boolean state) {
        this.state = state;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getResult() {
        return result;
    }

    public void setResult(Object result) {
        this.result = result;
    }

    public boolean state;
    public String message;
    public Object result;
}

class SUCCESS extends BackResult {

    public SUCCESS(String message, Object result) {
        super(message, result);
        this.state = true;
    }
}

class ERROR extends BackResult {

    public ERROR(String message, Object result) {
        super(message, result);
        this.state = false;
    }
}

上传文件测试:

访问方式【POST】,访问路径【http://127.0.0.1:8080/api/Index】,这里面我给操作步骤了,挨个点就行,如果的图片就直接读取,其它文件类型就解析即可。


本文转载自: https://blog.csdn.net/feng8403000/article/details/127504129
版权归原作者 红目香薰 所有, 如有侵权,请联系我们删除。

“sprintboot文件上传XML文件并解析”的评论:

还没有评论