У меня есть класс, в котором я объявил сериализованный класс для хранения данных изображения
@Persistent(serialized = "true") private DownloadableFile imageLogoFile;
Реализация класса
public class DownloadableFile implements Serializable {
общедоступный DownloadableFile (содержимое байта [], строка имени файла, строка mimeType) {super (); this.content = content; this.filename = имя файла; this.mimeType = mimeType; } частный статический окончательный длинный serialVersionUID = -8497358622042084708L; закрытый байт [] содержание; частное строковое имя файла; private String mimeType; общедоступный DownloadableFile () {}}
showlogo - это сервлет, который должен получать контент из хранилища данных, но все его вызовы возвращают значение null, тогда как blob-объект отображается в appwrench.
Место, где ожидается размещение данных изображения
final Image logoImage = new Image();
logoImage.setUrl("/showlogo");
logoImage.setHeight("100px");
logoImage.setWidth("100px");
Изменить: теперь данные изображения сохраняются и извлекаются, но изображение растягивается. Я пробовал указать высоту / ширину и т. Д.,
Код сервлета:
com.sms.DownloadableFile df = w.getImageLogoFile();
if (df != null){
String filen = df.getFilename();
response.setHeader("Content-Disposition", "filename="+filen);
String mime = df.getMimeType();
response.setContentType(mime);
byte[] b = df.getContent();
//Base64.encode(b);
response.setContentLength(b.length);
ServletOutputStream out = response.getOutputStream();
out.write(b);
// Pipe data here
out.flush();
out.close();
}