Я пытаюсь загрузить файл изображения в базу данных. Прежде чем изображение будет сохранено, я хотел бы отобразить его пользователю.
У меня есть bean-компонент с областью запроса, UserInfoBean
(который я не могу изменить из-за области запроса), который я пытаюсь использовать для сохранения данных, однако preview
byte[] имеет значение null при вызове краски. Есть ли способ сохранить preview
или image
, доступ к UploadItem при вызове paint()?
код info.xhtml:
<a4j:outputPanel id="preview"
<a4j:mediaOutput id="imgPreview"
element="img"
mimeType="image/jpeg"
createContent="#{userInfo.paint}"
cacheable="false"
style="width:150px; height:100px;" />
<br/>
</a4j:outputPanel>
<a4j:outputPanel id="signatureStampDisplay">
<br/>
<rich:fileUpload fileUploadListener="#{userInfo.uploadImage}"
id="upload"
listHeight="40px"
acceptedTypes="#{userInfo.supportedTypes}"
ontyperejected="alert('Only JPG, GIF, PNG, BMP, and TIF files are accepted');"
maxFilesQuantity="1"
immediateUpload="true"
autoclear ="true"
disabled="#{userInfo.stampSet}">
<a4j:support event="onuploadcomplete"
limitToList="true"
reRender="preview"/>
</rich:fileUpload>
</a4j:outputPanel>
Часть UserInfoBean с UploadItem
изображением и byte[]
предварительным просмотром:
public void uploadImage(UploadEvent evt) throws IOException{
image = evt.getUploadItem();
if(image != null){
//preview is a byte[]
preview = FileUtils.readFileToByteArray(image.getFile());
}
}
public void paint(OutputStream stream, Object object) throws IOException{
if(preview != null){
stream.write(preview);
}
}
stream.close();
послеstream.write(preview);
+ вам нужно правильно установитьmimeType
вa4j:mediaOutput
. - person Vasil Lukach   schedule 12.06.2014paint
видитpreview
как нуль. Тем не менее, я внес рекомендованные вами изменения, спасибо за это. - person zomgcopters   schedule 12.06.2014HttpSession session.setAttribute(name, object)
для передачи изображения, и сейчас я его тестирую. - person zomgcopters   schedule 12.06.2014