Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数据库无法以html格式存储_Java_Mysql_Spring_Jpa - Fatal编程技术网

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

Java 数据库无法以html格式存储,java,mysql,spring,jpa,Java,Mysql,Spring,Jpa,我正在使用springmvc、hibernate和mysql。每当我上传项目中的文件时,数据库不会以HTML格式保存,我希望上传文件的用户,数据库应该保持该格式。我该怎么办 上载控制器在上载期间调用的方法。除了代码外,任何一般性的想法都将受到欢迎 private String getContentDescription(MultipartFile file, Long contentCategoryId) { StringBuffer contentDescription = new Str

我正在使用
springmvc
hibernate
mysql
。每当我上传项目中的文件时,数据库不会以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;
}

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

  • 您发送到服务的请求应该是
    UTF-8

  • 在将数据持久化到之前,应将数据作为
    UTF-8
    进行处理

    DB

  • 检查支持
    Unicode
    字符编码

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

  • 要将数据保存到数据库中,该列应能够存储stat特定数据。要存储
    UTF-8
    数据,请将Db列转换为
    lob或blob
    类型 使用blow引用为相同的配置JPA。

    弹簧配置


    Spring多部分文件上传:

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

    私有字符串getContentDescription(多部分文件文件,长contentCategoryId){
    try(InputStream-InputStream=file.getInputStream();
    BufferedReader br=新的BufferedReader(新的InputStreamReader(inputStream,“UTF-8”)){
    StringBuilder sb=新的StringBuilder();
    弦线;
    而((line=br.readLine())!=null){
    某人附加(行);
    sb.追加('\n');
    }
    使某人返回字符串();
    }捕获(ioe异常ioe){
    ioe.printStackTrace();
    }
    返回null;
    }
    
    上面的代码与在数据库中保存文本有什么关系?它只是控制器在保存数据时调用的一种方法。这可能没有帮助,但任何建议或想法都会帮助我。很抱歉出现任何错误。那么您是否检查了此方法是否损坏了字符串?如果您希望将接收的文件完全保存为接收的文件,请不要先将其解析为其他文件。只需检索字节并保存它们。或者使用正确的字符集将字节转换为文本并保存该文本,
    Math.max(0,contentText.length())
    的目的是什么?您希望
    字符串
    何时返回小于
    0
    length()
    contentText.substring(0,Math.max(0,contentText.length())
    contentText.substring(0,contentText.length())
    相同。我不理解的一点是返回值为什么为null?它不是。它正在使某人返回字符串();如果它得到一个异常,它将返回null。!J?word/glossary/webSettings.xmlj0{at_0JHR(/\Gid$m5lz_im>Q42 mA