У меня есть класс, в котором я объявил сериализованный класс для хранения данных изображения
@Persistent(serialized = "true")
private DownloadableFile imageLogoFile;
Реализация класса
public class DownloadableFile implements Serializable {
public DownloadableFile (byte [] content, String filename, String mimeType) {
супер();
this.content = content;
this.filename = имя файла;
this.mimeType = mimeType;
}
приватный статический финал long serialVersionUID = -8497358622042084708L;
закрытый байт [] контент;
приватное имя файла String;
private String mimeType;
public DownloadableFile () {
}
}
showlogo - это сервлет, который должен извлекать содержимое из хранилища данных, но все его вызовы возвращают ноль, тогда как большой двоичный объект отображается в 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();
}