【发布时间】:2015-08-13 05:08:41
【问题描述】:
我想以字节数组的形式接收上传的图像(以便可以将其插入到 sql 数据库中)。 我还想将上传的图片显示为预览。
我尝试了以下代码,但我没有收到完整图像的字节。 (如果我打印字节数组,它只会打印几个字符)
final Embedded preview = new Embedded("Uploaded Image");
preview.setVisible(false);
final Upload upload = new Upload();
upload.setCaption("Image");
// Create upload stream
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); // Stream to write to
upload.setReceiver(new Upload.Receiver() {
@Override
public OutputStream receiveUpload(String filename, String mimeType) {
return baos; // Return the output stream to write to
}
});
upload.addSucceededListener(new Upload.SucceededListener() {
@Override
public void uploadSucceeded(Upload.SucceededEvent succeededEvent) {
final byte[] bytes = baos.toByteArray();
preview.setVisible(true);
preview.setSource(new StreamResource(new StreamResource.StreamSource() {
@Override
public InputStream getStream() {
return new ByteArrayInputStream(bytes);
}
}, ""));
}
});
【问题讨论】:
-
在getStream()方法中获取字节,看看是否有帮助。
-
你的意思是字节变量?如果我打印它,它只包含几个字符
-
是的。
bytes变量。 -
如果我打印它只包含几个字符
-
在 getStream() 方法中使用
bytes = baos.toByteArray()。