Java将文件输出到屏幕
我知道这有点宽泛,但情况是这样的: 我正在使用JSP和Java。我的服务器上有一个文件。我想在屏幕上添加一个链接,当单击该链接时,将打开文件供用户查看。该文件可以显示在web浏览器的窗口中,也可以弹出打开该文件所需的程序(类似于将iText输出到屏幕时,Adobe将在屏幕上打开以显示该文件)。我已经知道我的输出流了,但是如何将文件写入输出流?我读到的大部分内容只涉及文本文件,但我可能也涉及图像文件等 感谢您的帮助!Java将文件输出到屏幕,java,file-io,Java,File Io,我知道这有点宽泛,但情况是这样的: 我正在使用JSP和Java。我的服务器上有一个文件。我想在屏幕上添加一个链接,当单击该链接时,将打开文件供用户查看。该文件可以显示在web浏览器的窗口中,也可以弹出打开该文件所需的程序(类似于将iText输出到屏幕时,Adobe将在屏幕上打开以显示该文件)。我已经知道我的输出流了,但是如何将文件写入输出流?我读到的大部分内容只涉及文本文件,但我可能也涉及图像文件等 感谢您的帮助! 谢谢 您需要创建一个“下载”servlet,该servlet使用正确的mime类
谢谢 您需要创建一个“下载”servlet,该servlet使用正确的mime类型将文件写入响应输出流。在.jsp文件中无法可靠地执行此操作
我们通常使用一个“下载servlet”,将servlet映射设置为/downloads,然后附加路径信息以标识要服务的资产。servlet验证请求是否有效,设置mime头,然后将文件传递到输出流。这很简单,但在执行此操作时,请将J2EE javadocs放在手边。您需要创建一个“下载”servlet,该servlet使用正确的mime类型将文件写入响应输出流。在.jsp文件中无法可靠地执行此操作
我们通常使用一个“下载servlet”,将servlet映射设置为/downloads,然后附加路径信息以标识要服务的资产。servlet验证请求是否有效,设置mime头,然后将文件传递到输出流。这很简单,但在进行此操作时,请将J2EE javadocs放在手边。您需要向响应中添加某些字段。对于文本/csv,您需要执行以下操作:
response.setContentType("text/csv"); // set MIME type
response.setHeader("Content-Disposition", "attachment; filename=\"" strExportFileName "\"");
这里有一个关于它的论坛。您需要在响应中添加某些字段。对于文本/csv,您需要执行以下操作:
response.setContentType("text/csv"); // set MIME type
response.setHeader("Content-Disposition", "attachment; filename=\"" strExportFileName "\"");
这里有一个关于它的论坛。这里有一个关于如何实现它的简单实现:
protected void doPost(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
// extract filename from request
// TODO use a whitelist to avoid [path-traversing][1]
File file = new File(getFileName(request));
InputStream input = new FileInputStream(file);
response.setContentLength((int) file.length());
// TODO map your file to the appropriate MIME
response.setContentType(getMimeType(file));
OutputStream output = response.getOutputStream();
byte[] bytes = new byte[BUFFER_LENGTH];
int read = 0;
while (read != -1) {
read = input.read(bytes, 0, BUFFER_LENGTH);
if (read != -1) {
output.write(bytes, 0, read);
output.flush();
}
}
input.close();
output.close();
}
下面是一个简单的实现方法:
protected void doPost(final HttpServletRequest request,
final HttpServletResponse response) throws ServletException,
IOException {
// extract filename from request
// TODO use a whitelist to avoid [path-traversing][1]
File file = new File(getFileName(request));
InputStream input = new FileInputStream(file);
response.setContentLength((int) file.length());
// TODO map your file to the appropriate MIME
response.setContentType(getMimeType(file));
OutputStream output = response.getOutputStream();
byte[] bytes = new byte[BUFFER_LENGTH];
int read = 0;
while (read != -1) {
read = input.read(bytes, 0, BUFFER_LENGTH);
if (read != -1) {
output.write(bytes, 0, read);
output.flush();
}
}
input.close();
output.close();
}