Как скачать файл с Vaadin 10? - PullRequest
       23

Как скачать файл с Vaadin 10?

0 голосов
/ 03 сентября 2018

Я хочу разрешить пользователю загружать файл с сервера. Я искал решение и при попытке сделать пример - получилось так:

@Route("test-download")
public class Download extends VerticalLayout {

    public Download() {
        Anchor downloadLink = new Anchor(createResource(), "Download");
        downloadLink.getElement().setAttribute("download", true);
        add(downloadLink);
    }

    private AbstractStreamResource createResource() {
        return new StreamResource("/home/johny/my/important-file.log", this::createExportr);
    }

    private InputStream createExportr(){
        return null;
    }
}

Что дает java.lang.IllegalArgumentException: Resource file name parameter contains '/', когда я захожу на страницу в браузере.
Как сделать кнопку загрузки (или привязку), зная расположение файла на диске?

1 Ответ

0 голосов
/ 04 сентября 2018

Взгляните на документацию , пункт «Использование StreamResource». Первый параметр - это просто имя файла, которое будет использоваться браузером для предложения имени файла пользователю при загрузке. Таким образом, вы можете передать его как "important-file.log". Содержание загрузки предоставляется параметром InputStream. Например, вы можете прочитать из вашего файла, см. здесь :

File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = new FileInputStream(initialFile);
...