数据库无法以html格式存储

时间:2017-01-13 05:57:59

标签: java mysql spring jpa

我正在使用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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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

  1. 您要发送给服务的请求应为UTF-8

  2. 数据应该以{{1​​}}处理,直到您将数据保留到

    DB。

  3. 检查支持UTF-8和的连接字符串     Unicode

  4.   

    属性名称=" javax.persistence.jdbc.url"
      值=" JDBC:MySQL的://本地主机:3306 / blogdatabase了useUnicode = YES&安培;的characterEncoding = UTF-8"

    1. 要将数据保存到数据库,该列应该能够存储特定数据。要存储Character Encoding数据,请将Db列转换为UTF-8类型。
    2. 使用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/