我正在尝试保存Primefaces的输入流
UploadedFile
变成一个字符串。
原因是,我不知道如何使用hibernate持久化inputstream。
给出以下代码:
public String saveDocumentInDatabase(final UploadedFile pFile) throws IOException{
InputStream inputStream = pFile.getInputstream();
byte[] buffer = new byte[8192];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1)
{
baos.write(buffer, 0, bytesRead);
}
byte[] tmp = baos.toByteArray();
return new String(tmp, StandardCharsets.UTF_8);
}
public StreamedContent downloadUploadedFile(final JoinExam pJoinExam){
assertNotNull(pJoinExam.getSavedDocument());
String tmp = pJoinExam.getSavedDocument().trim();
java.io.InputStream inputStream = null;
try {
inputStream = new ByteArrayInputStream(tmp.getBytes("UTF-8"));
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace(System.err);
}
return new DefaultStreamedContent(inputStream, "application/pdf",
"Protocol" + pJoinExam.getPruefling().getMatrNr()+ ".pdf");
}
在我的联合考试中,我有以下属性。
@Lob
@Column
private String savedDocument;
我的注意是将上传的文件inputStream保存到我的字符串中
savedDocument
,它应该“表示”我上载的文件。
当我想下载我的“上传文件”时,我想
保存文档
字符串并将其转换回inputStream。
实现的inputStream将用于创建
DefaultStreamedContent
所以我可以下载primefaces文件
<p:fileDownload />
-标记。
我的问题是,inputstream在转换为字符串时似乎丢失了一些数据,或者字符串在转换回inputstream时似乎丢失了一些数据。
当我下载文件并试图打开它时,会弹出一个错误,表示无法打开该文件。
谢谢你的问候
编辑:当我上传和下载时。txt文件它可以工作,但不能处理pdf文件。