2017-01-13 85 views
0

我正在使用springmvc,hibernatemysql。每當我上傳一個文件在我的項目中的數據庫不保存爲HTML格式,我希望那個用戶上傳文件,數據庫應該保持格式。我該怎麼辦?數據庫無法以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; 
} 
+1

上面的代碼如何與保存數據庫中的文本相關? –

+0

它只是控制器在保存數據期間調用的一種方法。這可能沒有幫助,但任何建議或任何想法都會幫助我。對不起,有任何錯誤。 –

+0

那麼你是否檢查這種方法是否會破壞你的字符串? –

回答

0

應該從應用程序端點分析此問題。

  1. 您要發送到服務的請求應該是UTF-8

  2. 的數據應該UTF-8,直到你堅持下去的數據

    DB處理。

  3. 檢查支持UnicodeCharacter Encoding

屬性名= 「javax.persistence.jdbc.url」
值=「JDBC連接字符串的:mysql://本地主機:3306/blogdatabase?了useUnicode =是&的characterEncoding = UTF-8"

  • 至S將數據存入數據庫的列應該能夠存儲統計的特定數據。存儲UTF-8數據將Db列轉換爲lob or blob類型。
  • 使用blow reference將JPA配置爲相同。 JPA utf-8 characters not persisted

    Spring的配置文件Spring MVC UTF-8 Encoding

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

    1

    您正在使用提卡來解析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; 
    } 
    
    +0

    我不理解的一件事是爲什麼返回值是否爲空? –

    +0

    它不是。它返回sb.toString();如果它得到一個異常,它將返回null。 – teacurran

    +0

    !J?word/glossary/webSettings.xmlj0 {at_0JHR(/ \ Gid $ m5lz_im> Q42 mA