Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Upload.setAcceptMimeTypes不能工作两次?_Java_Vaadin_Vaadin8 - Fatal编程技术网

Java 为什么Upload.setAcceptMimeTypes不能工作两次?

Java 为什么Upload.setAcceptMimeTypes不能工作两次?,java,vaadin,vaadin8,Java,Vaadin,Vaadin8,对不起,我的英语不是很好。为什么,当我再次尝试上载文件时,我的MIME筛选器(由setAcceptMimeTypes安装)会消失,并且我可以再次看到所有文件 首次上传: 第二次上传: 我的代码: @SpringUI public class MyUI extends UI{ @Value("${app.path}") private String basePath; @Value("${app.mimeTypes}") private String mimeT

对不起,我的英语不是很好。为什么,当我再次尝试上载文件时,我的MIME筛选器(由setAcceptMimeTypes安装)会消失,并且我可以再次看到所有文件

首次上传:

第二次上传:

我的代码:

@SpringUI
public class MyUI extends UI{
    @Value("${app.path}")
    private String basePath;
    @Value("${app.mimeTypes}")
    private String mimeType;
    @Value("${app.maxSize}")
    private int maxSize;
    private double fileSize;
    private File file;
    Upload upload;
    private OutputStream os = null;

@Override
protected void init(VaadinRequest request) {
    final VerticalLayout baseLayout = new VerticalLayout();
    TabSheet sample = new TabSheet();
    sample.setHeight(100.0f, Unit.PERCENTAGE);
    sample.addStyleName(ValoTheme.TABSHEET_FRAMED);
    sample.addStyleName(ValoTheme.TABSHEET_PADDED_TABBAR);

    HorizontalLayout uploadLayout = new HorizontalLayout();
    addUploadLayout(uploadLayout);
    HorizontalLayout downloadLayout = new HorizontalLayout();
    addDownloadLayout(downloadLayout);

    sample.addTab(uploadLayout, "Upload");
    sample.addTab(downloadLayout, "Download");

    baseLayout.addComponent(sample);
    setContent(baseLayout);
}

private void addUploadLayout(HorizontalLayout layout){
    upload = new Upload();
    upload.setImmediateMode(false);
    upload.setButtonCaption("Upload File");
    upload.setAcceptMimeTypes(mimeType);
    upload.setReceiver((Upload.Receiver) (filename, mimeType) -> {
        file = new File(basePath + filename);
        try {
            os = new FileOutputStream(file);
            return os;
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    });

    upload.addProgressListener((readBytes, contentLength) -> {
        fileSize = (double) contentLength / 1024;
        if (fileSize > maxSize){
            upload.interruptUpload();
            Notification.show("Слишком большой файл.", Notification.Type.ERROR_MESSAGE);}
    });

    upload.addSucceededListener(event -> {
        DecimalFormat df = new DecimalFormat("0.00");
        Notification.show("Загрузка завершена, загружено " + df.format(fileSize) + " кб.", Notification.Type.TRAY_NOTIFICATION);
        try {
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    });

    upload.addFailedListener(event -> {
        file.delete();
        Notification.show("Ошибка загрузки.", Notification.Type.TRAY_NOTIFICATION);
        try {
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    });
    layout.setMargin(true);
    layout.addComponent(upload);
}

private void addDownloadLayout(HorizontalLayout layout){
    Label label = new Label("Hello People!!!");
    layout.setMargin(true);
    layout.addComponent(label);
}
}