FileWriter для записи на рабочий стол пользователя в Java, а не на рабочий стол сервера - PullRequest
0 голосов
/ 22 января 2020

Как часть поискового приложения, я хочу, чтобы пользователь мог загрузить отчет с результатами в файле CSV. У меня есть следующий метод:

public void downloadCustomerResults(String customer) {
        String output = "";
        output += produceCustomerID(customer);
        output += produceCustomerAddress(customer);
        output += produceCustomerContactDetails(customer);
        output += produceOrderHeader(customer);
        output += producePayments(customer);

        //  Writes to server desktop, not user desktop.
        try {
            Writer fileWriter = new FileWriter("C:\\Users\\username\\Desktop\\SAR" + customer + "C.csv");
            fileWriter.write(output);
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Это загружает файл на рабочий стол компьютера, на котором работает сервер, а не на рабочий стол пользователя (доступ к приложению через JSP на Tomcat). Как бы я изменил строку пути к файлу, чтобы сделать эту загрузку на рабочий стол пользователя? Или мне придется передать файл в JSP, чтобы пользователь мог загрузить его через браузер?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Таким образом, я нашел ответ использовать пакет JavaScript FileSaver. js. Это принимает большой двоичный объект, созданный из строки, а затем сохраняет его с именем файла по вашему выбору в предпочтительной папке загрузки браузера.

Мне удалось передать строку от Java до JavaScript, а затем передать ее через FileSaver. js на странице. JSP.

0 голосов
/ 22 января 2020

Краткий ответ: у сервера нет средств доступа к файловой системе клиента.

Более длинный ответ: Вы можете предоставить клиенту услугу для загрузки файла (например, веб-сервис, доступный через URI, например, @ Каяман упоминается) или клиент предоставляет вам сервис для записи файла (например, удаленная файловая система, FTP-сервер и т. Д. c.). Для последних может быть библиотеками, предоставляющими специальное расширение java.nio.FileSystem.

Вы также можете предоставить приложение, работающее на клиенте, для получения файла. Затем это клиентское приложение будет иметь доступ к файловым системам клиента (если, конечно, у него нет прав доступа).

...