Java 如何以字符串形式向UI显示字节[]
我从ms word中获取字符串输入,并使用blob保存在数据库中,现在我想从数据库获取数据并将其显示到UI。请帮助我如何将内容呈现到UI 这是我的控制器,显示我如何从MS Word获取数据:Java 如何以字符串形式向UI显示字节[],java,hibernate,spring-mvc,blob,inputstream,Java,Hibernate,Spring Mvc,Blob,Inputstream,我从ms word中获取字符串输入,并使用blob保存在数据库中,现在我想从数据库获取数据并将其显示到UI。请帮助我如何将内容呈现到UI 这是我的控制器,显示我如何从MS Word获取数据: @RequestMapping(value="studentattedanceupload", method = RequestMethod.POST) public @ResponseBody String AttendanceUpload(MultipartHttpServletRequest requ
@RequestMapping(value="studentattedanceupload", method = RequestMethod.POST)
public @ResponseBody String AttendanceUpload(MultipartHttpServletRequest request, HttpServletResponse response, @RequestParam Long batchId, @RequestParam Long slotId, @RequestParam String date) {
String langCode = "EN";
Long moduleId = (long) 1;
try {
MultipartFile multipartFile = request.getFile("filename");
byte[] bytes = multipartFile.getBytes();
String content= multipartFile.getContentType();
mockTestService.saveInstruction(bytes,content, langCode, moduleId);
return "1";
} catch (Exception e) {
logger.error("Error while uploading the Attendance List", e);
}
return "2";
}
这是我的服务层:
@Transactional(propagation=Propagation.REQUIRED)
public void saveInstruction(byte[] bytes,String content, String langCode, Long moduleId) throws FileNotFoundException {
// TODO Auto-generated method stub
ModuleDetails moduleDetails = moduleDetailsDao.getModuleDetailsByMid(moduleId);
if(moduleDetails != null){
LanguageDetails languageDetails = languageDetailsDao.getLanguageDetailsByLangId(langCode);
if(languageDetails != null){
InstructionSet instructionSet = instructionSetDao.getInstructionSetById(new InstructionSetPK(moduleDetails, languageDetails));
if(instructionSet == null){
instructionSet = new InstructionSet();
instructionSet.setInstructionSetPK(new InstructionSetPK(moduleDetails, languageDetails));
instructionSet.setInstruction(bytes);
instructionSet.setContent(content);
instructionSetDao.save(instructionSet);
}else{
instructionSet.setInstruction(bytes);
}
}else{
throw new FileNotFoundException();
}
}else{
throw new FileNotFoundException();
}
}
这是我的刀:
@Override
public Serializable save(Object entity) {
// TODO Auto-generated method stub
return currentSession().save(entity);
}
这是我的模型:
型号
@Entity
@Table(name="TB_INSTRUCTION_SET")
public class InstructionSet implements Serializable {
@EmbeddedId
private InstructionSetPK instructionSetPK;
@Column(name="INSTRUCTION")
@Lob
private byte[] instruction;
@Column(name="CONTENT")
private String content;
public InstructionSet() {
// TODO Auto-generated constructor stub
}
//getter和setter已初始化
指令setpk的型号
@Embeddable
public class InstructionSetPK implements Serializable {
@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name="MODULE_ID")
private ModuleDetails moduleDetails;
@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name="LANG_ID")
private LanguageDetails languageDetails;
public InstructionSetPK() {
// TODO Auto-generated constructor stub
}
现在我希望存储在数据库中的数据在UI中显示为在Word中输入的字符串。为此,我可以获取字节[]
,但我希望显示ms word中的内容,而不是加密的字节
这是我尝试获取数据的服务层:
@Override
public InstructionSet getInstructionFromModuleIdAndLangCode(Long moduleId,
String langCode) {
ModuleDetails moduleDetails = moduleDetailsDao.getModuleDetailsByMid(moduleId);
if(moduleDetails != null){
LanguageDetails languageDetails = languageDetailsDao.getLanguageDetailsByLangId(langCode);
if(languageDetails != null){
InstructionSet instructionSet = instructionSetDao.getInstructionSetById(new InstructionSetPK(moduleDetails, languageDetails));
return instructionSet;
}
}
return null;
}
我的控制器(我卡在那里了)
我不知道如何获取数据并将其发送到用户界面。您可以在此处使用,它已被用于读取docx、xls等。您可以在此处使用,它已被用于读取docx、xls等。如何读取?我可以在字节[]中发送用户界面的数据,但我需要发送的只是字符串。。。这就是我被卡住的地方,我不知道如何使用InputStream发送字符串。您是否正在寻找新字符串(字节[])
?(应该没有InputStream
参与)我尝试了使用字符串(byte[]),但是我仍然得到一些嵌入的数据。我已经从MS word发送了“Hi world”,并将其作为blob类型保存在数据库中。不,我想检索Hi world并将其作为字符串发送到UI,而现在我正在获取一些字节类型的加密数据….getBytes
在文件上返回文件内容,MSWord不是纯文本,因此文件内容不是文本内容。如何读取?我能够以字节[]为UI发送数据但我需要发送的只是字符串。。。这就是我被卡住的地方,我不知道如何使用InputStream发送字符串。您是否正在寻找新字符串(字节[])
?(应该没有InputStream
参与)我尝试了使用字符串(byte[]),但是我仍然得到一些嵌入的数据。我已经从MS word发送了“Hi world”,并将其作为blob类型保存在数据库中。不,我想检索Hi world并将其作为字符串发送到UI,而不是现在我正在获取一些字节类型的加密数据….getBytes
文件返回文件内容,MSWord不是纯文本,因此文件内容不是文本内容。不,我有db中的数据,数据类型是blob。我所需要的只是获取数据并在inputstream的帮助下显示它。这就是我是Stuck,正如您所提到的,您有可用的输入流,使用该输入流创建一个文件或fileinputstream对象,然后将该文件作为参数发送给其他对象。如果我超出范围,请忽略。不,我有数据库中的数据,数据类型为blob。我所需要的只是获取数据并在inputstream的帮助下显示它。这就是我是Stuck,正如您所提到的,您有可用的输入流,使用该输入流创建一个文件或fileinputstream对象,然后将该文件作为参数发送给其他对象。如果我出界,请不要理我。
@RequestMapping(value="instructiondisplay", method = RequestMethod.GET)
public void instructionDisplay(HttpServletRequest request , HttpServletResponse response/*, @RequestParam String langCode, @RequestParam Long moduleId*/){
String langCode = "EN";
Long moduleId = (long) 1;
try{
InstructionSet instructionSet=mockTestService.getInstructionFromModuleIdAndLangCode(moduleId, langCode);
if(instructionSet!=null){
InputStream inputStream= request.getInputStream();
inputStream.read(instructionSet.getInstruction());
}
}
catch(Exception e){
e.printStackTrace();
}
return ;
}