How to obtain temp storage id from filedescriptor?

I have this scenario, and i need to save file to permanent storage in CloseListener. How can i do it since fileDescriptor.getId() retrieves not valid id for TEMP file storage.

dialogs.createInputDialog(this)
            .withCaption("Select the file")
            .withParameters(
                    InputParameter.fileParameter("fileField") 
                            .withCaption("File"))
            .withCloseListener(closeEvent -> {
                if (closeEvent.closedWith(DialogOutcome.OK)) {
                    FileDescriptor fileDescriptor = closeEvent.getValue("fileField");  
                    //TODO: how to get fileDescriptor.getId() so i can use fileUploadingAPI.putFileIntoStorage(fileDescriptor.getId(), fileDescriptor);
                    //if i just commit fileDescriptor dataManager.commit(fileDescriptor); it results in filedscriptor without file attached.
                }
            })
            .show();

Figured this out:

dialogs.createInputDialog(this)
            .withCaption("Select the file")
            .withParameters(
                    InputParameter.parameter("fileField")
                                .withField(() -> {
                                    FileUploadField uf = uiComponents.create(FileUploadField.class);
                                    uf.setMode(FileUploadField.FileStoragePutMode.IMMEDIATE);
                                    return uf;
                                })
            .withCloseListener(closeEvent -> {
                if (closeEvent.closedWith(DialogOutcome.OK)) {
                    FileDescriptor fileDescriptor = closeEvent.getValue("fileField");  
                    //TODO: how to get fileDescriptor.getId() so i can use fileUploadingAPI.putFileIntoStorage(fileDescriptor.getId(), fileDescriptor);
                    //if i just commit fileDescriptor dataManager.commit(fileDescriptor); it results in filedscriptor without file attached.
                }
            })
            .show();