有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java数据库无法以html格式存储

我正在使用springmvchibernatemysql。每当我上传项目中的文件时,数据库不会以HTML格式保存,我希望上传文件的用户,数据库应该保持该格式。我该怎么办

上载控制器在上载期间调用的方法。除了代码外,任何一般性的想法都将受到欢迎

private String getContentDescription(MultipartFile file, Long contentCategoryId) {
  StringBuffer contentDescription = new StringBuffer();
  ContentHandler textHandler = new BodyContentHandler(-1);
  InputStream input = null;
  try {
    input = file.getInputStream();
    Metadata metadata = new Metadata();
    this.parser.parse(input, textHandler, metadata, new ParseContext());
    input.close();
  } catch (IOException | SAXException | TikaException e) {
    LOGGER.debug("Unable to read uploaded document", e);
  }
  String returnString = "";
  if (null != textHandler) {
    if (contentCategoryId==3 && contentCategoryId==4) {
      String contentText = textHandler.toString();
      returnString = contentText.substring(0, Math.max(0, contentText.length()));
    } else {
      String contentText = textHandler.toString();
      returnString = contentText.substring(0, Math.min(1200, contentText.length()));
    }
  }
  return returnString;
}

共 (2) 个答案

  1. # 1 楼答案

    您正在使用Tika解析HTML。BodyContentHandler将只返回在标记中找到的HTML,不包括任何其他内容。您要做的是读取整个文件。试着这样做:

    private String getContentDescription(MultipartFile file, Long contentCategoryId) {
        try (InputStream inputStream = file.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"))) {
            StringBuilder sb = new StringBuilder();
    
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
                sb.append('\n');
            }
            return sb.toString();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return null;
    }
    
  2. # 2 楼答案

    应该从应用程序端点分析此问题

    1. 您发送给服务的请求应该是UTF-8

    2. 数据应作为UTF-8处理,直到将数据持久化到

      DB

    3. 检查支持Unicode和的连接字符串 Character Encoding

    property name="javax.persistence.jdbc.url"
    value="jdbc:mysql://localhost:3306/blogdatabase?useUnicode=yes&characterEncoding=UTF-8"

    1. 为了将数据保存到数据库,列应该能够存储特定的数据。要存储UTF-8数据,请将Db列转换为lob or blob类型

    使用blow引用为相同的配置JPA。 JPA utf-8 characters not persisted

    弹簧配置Spring MVC UTF-8 Encoding

    Spring多部分文件上载:http://javainsimpleway.com/spring-mvc-file-upload-single-and-multiple-files-upload/