FileWriter用Java而不是服务器桌面写入用户桌面

问题描述 投票:0回答:2

作为搜索应用程序的一部分,我希望用户能够下载将结果显示为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();
        }
    }

这会将文件下载到运行服务器的计算机的桌面上,而不是用户的桌面上(通过Tomcat上的JSP访问应用程序)。我将如何更改文件路径字符串以将此下载下载到用户的桌面?还是我必须将文件传递给JSP,以便用户通过他们的浏览器下载?

谢谢。

java jsp path filewriter
2个回答
0
投票

简短的答案:服务器无法访问客户端的文件系统。

更长的答案:您可以为客户端提供下载文件的服务(例如,可以通过URI访问的Web服务,例如提到的@Kayaman),也可以由客户端为您提供写入文件的服务(例如,远程文件系统, FTP服务器等)。对于后者,[[might有提供特殊java.nio.FileSystem扩展名的库。

您还可以提供在客户端上运行的应用程序以接收文件。然后,该客户端应用程序将具有对客户端文件系统的访问权限(当然,除非缺少访问权限)。

0
投票
所以我找到的答案是使用JavaScript包FileSaver.js。这将接受从字符串创建的Blob,然后将其与您选择的文件名一起保存到浏览器的首选下载文件夹中。

我设法将字符串从Java传递到JavaScript,然后通过.JSP页面中的FileSaver.js传递。

© www.soinside.com 2019 - 2024. All rights reserved.