如何解决Vaadin 14 上传图片,检索tmp名称
我正在寻找检索成功上传文件的 tmp 名称的方法。
实际上我一直在使用以下代码上传图片:
if (mimeType.startsWith("image")) {
Image image = new Image();
try {
byte[] bytes = IOUtils.toByteArray(stream);
image
.getElement()
.setAttribute("src",new StreamResource(fileName,() -> new ByteArrayInputStream(bytes)));
try (ImageInputStream in = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes))) {
final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
if (readers.hasNext()) {
ImageReader reader = readers.next();
try {
reader.setInput(in);
image.setMaxWidth("100%");
} finally {
reader.dispose();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
sendEmailForShoes(image.getSrc());
return image;
}
Div content = new Div();
String text = String.format(
"Mime type: '%s'\nSHA-256 hash: '%s'",mimeType,Arrays.toString(MessageDigestUtil.sha256(stream.toString()))
);
content.setText(text);
return content;
}
private void sendEmailForShoes (String fileName) {
MailWithAttachmentService mail = new MailWithAttachmentService();
System.out.println("Filename :" + fileName);
try {
mail.sendMail(mail.getSession(),fileName);
} catch (IOException ex) {
System.out.println(ex.getMessage());
} catch (MessagingException ex) {
System.out.println(ex.getMessage());
}
但是我只得到了原始文件名,而不是上传的临时文件名。
编辑:更具体地说,我添加了一个屏幕截图,我想检索 tmp 文件名而不是图像的名称。
在这种情况下,我一直在使用 image.getSrc() 但我得到了以下路径:
文件名:VAADIN/dynamic/resource/4/5b0204c8-9b05-4933-9716-ca0f156c4b6a/air_max3.png
发送C:\Users\41786\Downloads\skeleton-starter-flow-spring-14\skeleton-starter-flow-spring-14\VAADIN/dynamic/resource/4/5b0204c8-9b05-4933-9716-ca0f156c4b6a/air_max3.png
我不知道从哪里可以获得 VAADIN/dynamic/resources/4/g-14\skeleton-starter-flow-spring-14\VAADIN/dynamic/resource/4/5b0204c8-9b05-4933-9716-ca0f156c4b6a/air_max3.png
路径
Edit2 : 在这个例子中 https://github.com/vaadin/vaadin-form-example/blob/master/src/main/java/org/vaadin/examples/form/ui/components/AvatarField.java#L150 我们可以看到定义了头像 :
currentAvatar.setSrc(new StreamResource("avatar",() -> new ByteArrayInputStream(value.getImage())));
我不确定这是否代表一个文件夹...
亚历山大
EDIT 3 有解决方案
upload.addSucceededListener(e -> {
Component component = createComponent(e.getMIMEType(),e.getFileName(),buffer.getInputStream());
showOutput(e.getFileName(),component,output);
//imgUpload = (Image) component;
InputStream inputStream = buffer.getInputStream();
targetFile = new File("D:\\tmp\\" + e.getFileName());
try {
FileUtils.copyInputStreamToFile(inputStream,targetFile);
} catch (IOException e1) {
e1.printStackTrace();
Notification.show("Error");
}
System.out.println("PATH : " +targetFile.getPath() );
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。