簡體   English   中英

FileWriter 用 Ja​​va 寫入用戶桌面,而不是服務器桌面

[英]FileWriter to write to user desktop in Java, rather than server desktop

作為搜索應用程序的一部分,我希望用戶能夠下載以 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 以供用戶通過瀏覽器下載?

謝謝。

簡短回答:服務器無法訪問客戶端的文件系統。

更長的答案:您可以為客戶端提供下載文件的服務(例如,可通過 URI 訪問的網絡服務,如提到的@Kayaman),或者客戶端為您提供寫入文件的服務(例如遠程文件系統、FTP服務器等)。 對於后者,可能有提供特殊java.nio.FileSystem擴展的庫。

您還可以提供在客戶端上運行的應用程序來接收文件。 然后,該客戶端應用程序將可以訪問客戶端的文件系統(當然,除非它沒有訪問權限)。

所以我找到的答案是使用 JavaScript 包 FileSaver.js。 這接受從字符串創建的 blob,然后使用您選擇的文件名將其保存到瀏覽器的首選下載文件夾中。

我設法將字符串從 Java 傳遞到 JavaScript,然后通過 .JSP 頁面中的 FileSaver.js 傳遞它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM