在 springboot 中读取和验证 CSV 文件

问题描述 投票:0回答:0

我正在读取和验证存储在 springboot 中的 .csv 文件中的数据。我能够获取 .csv 文件的内容。此外,我想验证存储在文件中的数据,因为除了文件内容之外,我还需要一些额外的属性。如果我从网页上传文件,我可以看到所需的额外属性。但是如果我从邮递员上传文件只有文件内容而不是其他必需的属性。它的迁移工作是我将代码从 .net 迁移到 java 的地方。如果我通过 .NET Web 上传文件,我会得到以下内容,其中包括 .csv 文件内容和其他属性,但是在通过邮递员在 Java 中开发相同内容时,我可以看到在红线下突出显示的 .csv 文件的内容。

为了验证 .csv 数据,我使用下面的 Java 代码,包括正则表达式。

public class MultipartParser {
   // private static final Logger logger = LogManager.getLogger(MultipartParser.class);

    public boolean success = false;
    public String name;
    public  String variableType;
    public String taxelid;
    public String text;
    public String contentType;
    public String fileName;

    public boolean ignoreFirstLine;

    public MultipartParser(){}
    public MultipartParser(MultipartFile stream){
        this.parse(stream);
    }
    public void parse(MultipartFile stream) {
        ///logger.info("Inside parser");

        try {
            String content = new String(stream.getBytes(), StandardCharsets.UTF_8);
            System.out.println("CONTENT::"+content);
            int delimiterEndIndex = content.indexOf("\r\n");

            if (delimiterEndIndex > -1)
            {
                String delimiter = content.substring(0, content.indexOf("\r\n"));
                // Look for Content-Type
                Pattern re = Pattern.compile("(?<=Content\\-Type:)(.*?)(?=\r\n\r\n)");
                Matcher contentTypeMatch = re.matcher(content);

                // Look for filename
                re = Pattern.compile("(?<=filename\\=\"\")(.*?)(?=\"\")");
                Matcher filenameMatch = re.matcher(content);

                // Look for variable
                re = Pattern.compile("(?<=name\\=\"\"variable\"\"\r\n\r\n)(.*?)(?=\r\n)");
                Matcher variableMatch = re.matcher(content);

                re = Pattern.compile("(?<=name\\=\"\"taxelid\"\"\r\n\r\n)(.*?)(?=\r\n)");
                Matcher taxelidMatch = re.matcher(content);

                // Look for name
                re = Pattern.compile("(?<=name\\=\"\"cgname\"\"\r\n\r\n)(.*?)(?=\r\n)");
                Matcher cgnameMatch = re.matcher(content);

                re = Pattern.compile("(?<=name\\=\"\"text\"\"\r\n\r\n)(.*?)(?=\r\n)");
                Matcher cgtextMatch = re.matcher(content);

                if (contentTypeMatch.matches() && filenameMatch.matches()){
                        this.variableType = variableMatch.group();
                        this.ignoreFirstLine = true;
                        this.name = cgnameMatch.group();
                        this.taxelid = taxelidMatch.group();
                        this.text = cgtextMatch.group();
                        this.success = true;
                }
            }
        } catch (Exception e) {
            //logger.error("Error whilr reading Multipart file:"+e.getMessage());
            e.printStackTrace();
        }
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getVariableType() {
        return variableType;
    }

    public void setVariableType(String variableType) {
        this.variableType = variableType;
    }

    public String getTaxelid() {
        return taxelid;
    }

    public void setTaxelid(String taxelid) {
        this.taxelid = taxelid;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getContentType() {
        return contentType;
    }

    public void setContentType(String contentType) {
        this.contentType = contentType;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public boolean isIgnoreFirstLine() {
        return ignoreFirstLine;
    }

    public void setIgnoreFirstLine(boolean ignoreFirstLine) {
        this.ignoreFirstLine = ignoreFirstLine;
    }

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }
}

任何人都可以告诉我如何在 Postman 中获取文件内容以外的其他属性,或者我需要做哪些设置 Postman 获取其他属性需要通过正则表达式。

帆船赛, 普拉巴什

java spring-boot csv spring-data-jpa java-io
© www.soinside.com 2019 - 2024. All rights reserved.