gpt4 book ai didi

java - 如何使用 servlet 中的保存文件对话框?

转载 作者:行者123 更新时间:2023-12-04 05:06:29 25 4
gpt4 key购买 nike

我试图让用户将我的 servlet 中的数据保存为 CSV 文件。最初我只是找到他们的桌面来删除文件,但是这条路线会拒绝许可,所以我想问用户他们想把它保存在哪里。

从我所见,我不能在 servlet 中使用 Swing API,因为 Tomcat 不知道如何绘制 GUI。我试过这段代码:

    String fileName = "ClassMonitor" + formatter.format(currentDate) + ".csv";

File csvFile = new File(fileName);

//Attempt to write as a CSV file
try{

JFileChooser fileChooser = new JFileChooser();
fileChooser.setSelectedFile(csvFile);
int returnValue = fileChooser.showSaveDialog(null);

if(returnValue == JFileChooser.APPROVE_OPTION)
{
BufferedWriter out = new BufferedWriter(new FileWriter(csvFile));

//Iterates and writes to file
for(ClassInfo classes : csvWrite)
{
//Check if the class has a comma. Currently, only section titles have a comma in them, so that's all we check for.
classes.setSectionTitle(replaceComma(classes.getSectionTitle()));

out.write(classes.toString());
}

//Close the connection
out.close();
}

//Log the process as successful.
logger.info("File was successfully written as a CSV file to the desktop at " + new Date() + "\nFilename" +
"stored as " + fileName + ".");

}
catch(FileNotFoundException ex)
{
//Note the exception
logger.error("ERROR: I/O exception has occurred when an attempt was made to write results as a CSV file at " + new Date());
}
catch(IOException ex)
{
//Note the exception
logger.error("ERROR: Permission was denied to desktop. FileNotFoundException thrown.");
}
catch(Exception ex)
{
//Note the exception
logger.error("ERROR: Save file was not successfull. Ex: " + ex.getMessage());
}



}

但这会抛出一个 headless 异常。

任何有关如何在 servlet 中实现诸如保存文件对话框之类的指导都将不胜感激。

最佳答案

只需将其写入响应正文而不是本地(!!)磁盘文件系统。

response.setContentType("text/csv"); // Tell browser what content type the response body represents, so that it can associate it with e.g. MS Excel, if necessary.
response.setHeader("Content-Disposition", "attachment; filename=name.csv"); // Force "Save As" dialogue.
response.getWriter().write(csvAsString); // Write CSV file to response. This will be saved in the location specified by the user.
Content-Disposition: attachment header 负责 Save As 魔法。
也可以看看:
  • JSP generating Excel spreadsheet (XLS) to download
  • 关于java - 如何使用 servlet 中的保存文件对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15483637/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com