用JSP下载word文件(不会直接用IE打开)

详细讲解“用JSP下载word文件(不会直接用IE打开)”的完整攻略如下:

1. 确定需要下载的文件路径

首先需要确认需要下载的word文件路径,并将其存储到服务器上,以便于后续读取。可以在服务器上建立一个专门用于存储文件的目录,比如 /files/,然后将需要下载的word文件存储在该目录下。

File file = new File(request.getServletContext().getRealPath("/files/word.doc"));

2. 设置下载相关的响应头信息

接下来需要设置相关的响应头信息,以确保浏览器会下载该文件并保存,而不是直接在浏览器中打开。可以通过设置 Content-Disposition 响应头来实现这一点。

response.setHeader("Content-Disposition","attachment;filename=word.doc");

3. 将文件内容写入响应输出流中

最后一步是将文件内容写入响应输出流中,这样浏览器才能开始下载该文件。可以利用 Java IO 的相关类来实现这一点,比如 InputStreamOutputStreamBufferedInputStream

try (InputStream in = new BufferedInputStream(new FileInputStream(file));
     OutputStream out = response.getOutputStream()) {
    byte[] buffer = new byte[1024];
    int len;
    while ((len = in.read(buffer)) != -1) {
        out.write(buffer, 0, len);
    }
} catch (IOException e) {
    e.printStackTrace();
}

示例:

  1. 下载服务器上的word文档
<%@page contentType="text/html;charset=UTF-8" language="java"%>
<%@page import="java.io.*" %>
<%@page import="javax.servlet.*" %>
<%@page import="javax.servlet.http.*" %>

<%
    String filePath = request.getServletContext().getRealPath("/files/word.doc");
    File file = new File(filePath);
    response.setHeader("Content-Disposition", "attachment;filename=word.doc");

    try (InputStream in = new BufferedInputStream(new FileInputStream(file));
         OutputStream out = response.getOutputStream()) {
        byte[] buffer = new byte[1024];
        int len;
        while ((len = in.read(buffer)) != -1) {
            out.write(buffer, 0, len);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
%>
  1. 下载网络上的word文档
<%@page contentType="text/html;charset=UTF-8" language="java"%>
<%@page import="java.io.*" %>
<%@page import="java.net.*" %>
<%@page import="javax.servlet.*" %>
<%@page import="javax.servlet.http.*" %>

<%
    String fileURL = "https://example.com/files/word.doc";
    URL url = new URL(fileURL);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Content-Type", "application/octet-stream");
    conn.setRequestProperty("Content-Disposition", "attachment;filename=word.doc");

    byte[] buffer = new byte[1024];
    int len;
    try (InputStream in = new BufferedInputStream(conn.getInputStream());
         OutputStream out = response.getOutputStream()) {
        while ((len = in.read(buffer)) > 0) {
            out.write(buffer, 0, len);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        conn.disconnect();
    }
%>

以上就是用JSP下载word文件(不会直接用IE打开)的完整攻略。需要注意的是,上述示例中的文件路径和URL需要根据实际情况进行修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用JSP下载word文件(不会直接用IE打开) - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java的Struts框架报错“ConfigurationResourcesNotFoundException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“NoSuchModuleException”错误。这个错误通常由以下原因之一起: 配置错误:如果配置文件中没有正确配置,则可能会出现此错误。在这种情况下,需要检查文件以解决此问题。 模块错误:如果模块不正确,则可能会出现此错误。在这种情况下,需要检查模块以解决此问题。 以下是两个实例: 例 1 如果配置文件中没…

    Java 2023年5月5日
    00
  • spring boot学习笔记之操作ActiveMQ指南

    下面是对“Spring Boot学习笔记之操作ActiveMQ指南”的详细讲解。 一、前言 ActiveMQ是一个流行的消息队列中间件,它支持多种协议和语言,并且具有可扩展性、高可用性、高吞吐量等特点。本文将介绍如何在Spring Boot项目中使用ActiveMQ进行消息传递,以及使用示例说明。 二、配置ActiveMQ 首先,在Spring Boot项目…

    Java 2023年6月2日
    00
  • java实现读取、删除文件夹下的文件

    关于Java实现读取、删除文件夹下的文件的攻略,可以分为两个步骤:读取和删除文件。 1. 读取文件 Java中读取文件需要使用File类,它提供了各种方法来处理文件和文件夹。使用File类的方法之一是listFiles(),该方法用于获取在文件夹中的所有文件和文件夹的列表。我们可以使用该方法获得要操作的文件夹下面的所有文件或文件夹。 以下是一个读取文件夹下所…

    Java 2023年5月20日
    00
  • Java日期时间使用方法汇总

    Java日期时间使用方法汇总 1. 日期时间的格式化 在Java中,可以使用SimpleDateFormat类来格式化日期时间。SimpleDateFormat的常见格式符如下: 符号 含义 yyyy 年份 MM 月份 dd 日期 HH 小时 mm 分钟 ss 秒 下面是一个示例代码: import java.text.SimpleDateFormat; i…

    Java 2023年5月20日
    00
  • Java中关于控制台读取数字或字符串的方法

    Java中关于控制台读取数字或字符串的方法有以下几种: 使用Scanner类读取控制台输入 Scanner是Java中的一个类,可以用于读取控制台输入。通过Scanner对象可以方便地从控制台读取数字或字符串。Scanner类位于java.util包中,在使用前需要导入该包。 import java.util.Scanner; public class Co…

    Java 2023年5月26日
    00
  • java的Hibernate框架报错“JDBCException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“InvalidMappingException”错误。这个错误通常是由于以下原因之一引起的: 映射文件错误:如果您的映射文件存在错误,则可能会出现此错误。在这种情况下,需要检查您的映射文件以解决此问题。 实体类错误:如果您的实体类存在错误,则可能会出现此错误。在这种情况下,需要检查您的实体类以解决此问题。…

    Java 2023年5月4日
    00
  • java实现大数加法(BigDecimal)的实例代码

    下面就是详细讲解“java实现大数加法(BigDecimal)的实例代码”的完整攻略: 1. 简介 在 Java 中,整数类型有其上限和下限,如果数值超出其范围,就会产生溢出,导致计算结果不正确。 为了解决这个问题,我们可以使用 BigDecimal 类型来进行大数值的加、减、乘、除运算,以确保计算的精确性。 2. 引入 BigDecimal 类 要使用 B…

    Java 2023年5月19日
    00
  • php自动识别文字编码并转换为目标编码的方法

    PHP自动识别文字编码及转换方法攻略 在PHP中,处理中文字符时,常常会遇到文字编码不一致的问题,本文将为你介绍一种PHP自动识别文字编码并转换为目标编码的方法。 Step 1:获取需要转换的文字 获取需要转换的文字,比如从用户提交的表单数据中获取文本信息。在获取之后,需要先判断编码格式,这里使用PHP的mb_detect_encoding()函数进行自动检…

    Java 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部