作为搜索应用程序的一部分,我希望用户能够下载以 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 访问的 Web 服务,如 @Kayaman 提到的),或者客户端为您提供写入文件的服务(例如远程文件系统) 、FTP 服务器等)。对于后者,可能有提供特殊java.nio.FileSystem
扩展的库。
您还可以提供在客户端上运行的应用程序来接收文件。然后,该客户端应用程序将可以访问客户端的文件系统(当然,除非它缺乏访问权限)。
关于java - FileWriter 用 Java 写入用户桌面,而不是服务器桌面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59861037/