我正在使用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;
}
答案 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)
应从应用程序端点分析此问题。
您要发送给服务的请求应为UTF-8
。
数据应该以{{1}}处理,直到您将数据保留到
DB。
检查支持UTF-8
和的连接字符串
Unicode
属性名称=" javax.persistence.jdbc.url"
值=" JDBC:MySQL的://本地主机:3306 / blogdatabase了useUnicode = YES&安培;的characterEncoding = UTF-8"
Character Encoding
数据,请将Db列转换为UTF-8
类型。 使用blow参考配置JPA。 JPA utf-8 characters not persisted
Spring多部分文件上传:http://javainsimpleway.com/spring-mvc-file-upload-single-and-multiple-files-upload/