我想在我的Servlet中创建一个txt文件,并在客户端请求时自动在客户端下载它。我有下面的代码要写入 txt,但它在使用 glassfishserver 的 Netbeans IDE 中给出访问被拒绝错误。我该怎么做?
//File creation
String strPath = "C:\\example.txt";
File strFile = new File(strPath);
boolean fileCreated = strFile.createNewFile();
//File appending
Writer objWriter = new BufferedWriter(new FileWriter(strFile));
objWriter.write("This is a test");
objWriter.flush();
objWriter.close();
最佳答案
这不是你在 JSP 中做的事情。您最好有一个 Servlet
并创建一个 Outputstream
并将文本放入其中。然后将该流刷新到 HttpServletResponse
中。
@WebServlet(urlPatterns = "/txt")
public class TextServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/plain");
response.setHeader("Content-Disposition", "attachment; filename=\"example.txt\"");
try {
OutputStream outputStream = response.getOutputStream();
String outputResult = "This is Test";
outputStream.write(outputResult.getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
请记住,您需要设置内容类型 text/plain
和 Content-Disposition
header ,其中提及文件名并告诉浏览器应将其作为文件附件下载。
这就是 Content-Disposition header 的简洁描述
In a regular HTTP response, the Content-Disposition response header is a header indicating if the content is expected to be displayed inline in the browser, that is, as a Web page or as part of a Web page, or as an attachment, that is downloaded and saved locally.
如果您是初学者。您可能想了解更多信息
关于java - 如何在Servlet中写入txt文件并在请求时自动下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295575/