gpt4 book ai didi

java - Vaadin 中的 MultiFileUpload - 我想在上传最后一个文件时执行一些任务

转载 作者:行者123 更新时间:2023-11-30 06:52:18 25 4
gpt4 key购买 nike

我想一次执行两项任务

  1. 上传多个文件。
  2. 上传所有选定的文件后,我想打开一个窗口并选择其类型和其他一些工作,然后保存它。

当我进行单次上传时,效果很好。

现在我正在尝试使用 MultiFileUpload addon 实现多重上传但事件 public void handleFile(InputStream in, String filename, String mimetype, long length) 会针对每个文件一一触发。我想在上传最后一个文件时打开该窗口。如何检测最后一个文件是否已上传?

这是我的代码:

protected void init(VaadinRequest vaadinRequest) {
FormLayout layout = new FormLayout();
UploadFinishedHandler uploadFinishedHandler = new UploadFinishedHandler() {
@Override
public void handleFile(InputStream in, String filename, String mimetype, long length) {
try {
FileOutputStream fos = null;
String filePath = "/home/yassir/Desktop/";
File dirFile = new File(filePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
filePath += filename;

Button btn = new Button(filename);
layout.addComponent(btn);
File file = new File(filePath);
fos = new FileOutputStream(file);
byte[] buffer = new byte[in.available()];
in.read(buffer);
fos.write(buffer);
fos.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(MyUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(MyUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
};

UploadStateWindow uploadStateWindow = new UploadStateWindow();
MultiFileUpload multiFileUpload = new MultiFileUpload(uploadFinishedHandler, uploadStateWindow);
layout.addComponent(multiFileUpload);
setContent(layout);
}

我将调用函数createWindowType()(我没有在此处添加)。

最佳答案

您可以使用 AllUploadFinishedHandler 处理上次文件上传.

这样的事情应该有效:

multiFileUpload.setAllUploadFinishedHandler(new AllUploadFinishedHandler() {
@Override
public void finished() {
//open window here
}
});

每次出现以下情况时都会调用此监听器:

  • 上传完成;
  • 没有其他上传正在进行。

关于java - Vaadin 中的 MultiFileUpload - 我想在上传最后一个文件时执行一些任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com