从服务器下载word文件

web框架:spring+hibernate+jQuery

前端jsp部分代码:
 <div class="container-fluid" style="padding-left: 0px; padding-right: 0px;">
      <div class="col-xs-10 col-sm-10 col-md-8 col-md-offset-2"
style="margin: 0 auto;float:none">
      <div class="col-sm-12 list_title bg_blue text_white" 
                    style="margin-bottom: 20px;" align="left" >点击下面的下载链接,下载表格</div>
      <span>文本下载:</sapn><a class="btn btn-md btn-submit bg_red" href="<c:url value="/fileserver/downloadservlet?filename=模板"/>">模板.doc</a>
      </div>
     </div>
在服务器端添加配置选项:在web.xml里添加servlet配置
<!-- Servlet -->
<servlet>
<servlet-name>nsl</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:nsl-servlet.xml</param-value>
</init-param>
<!--
<init-param> <param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/nsl-servlet.xml</param-value> </init-param>
-->
</servlet>

<servlet-mapping>
<servlet-name>nsl</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>


  <servlet>
        <description>FileServlet</description>
        <display-name>FileServlet</display-name>
        <servlet-name>FileServlet</servlet-name>
        <servlet-class>servlet.UploadServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>FileServlet</servlet-name>
                <url-pattern>/fileserver/upload</url-pattern>
        </servlet-mapping>
    
        <servlet>
                <servlet-name>DownLoadServlet</servlet-name>
                <servlet-class>servlet.DownLoadServlet</servlet-class>
        </servlet>
        <servlet-mapping>
                <servlet-name>DownLoadServlet</servlet-name>
                <url-pattern>/fileserver/downloadservlet</url-pattern>
        </servlet-mapping>

在conf下的system.properties文件里配置数据库连接的参数(下载的文件路径一般会存放在数据库里)
name   value
system.name        csoa(数据库名)
savePath           D:\***\(用tomcat发布的web项目的本地存放路径)
urlPath            http://localhost:****(****为tomcat接口,一般为8080)/****(****为项目名称)/download/(web访问已发布的项目的网址)

服务器端servlet下载对应java代码:
  package servlet;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Properties;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.nsl.web.util.WebUtils;

public class DownLoadServlet extends HttpServlet {
 
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//得到要下载的文件名

Properties p=WebUtils.getProperties("/system.properties");
    String fileSaveRootPath =p.getProperty("savePath");

    response.setContentType("text/html");
    javax.servlet.ServletOutputStream out = response.getOutputStream();
    String filepath=request.getRealPath("/") + "download/";
    String filename=new String(request.getParameter("filename")).toString();
     
    
    System.out.println("DownloadFile filepath:" + filepath);
    System.out.println("DownloadFile filename:" + filename);
    File file = new File(filepath + filename+".doc");
    if (!file.exists()) {
     System.out.println(file.getAbsolutePath() + " 文件不存在!");
        return;
    }
    // 读取文件流
    FileInputStream fileInputStream = new FileInputStream(file);
        // 下载文件
        // 设置响应头和下载保存的文件名
        if (filename != null && filename.length() > 0) {
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename=" + new String(filename.getBytes("utf-8"),"iso8859-1") + ".doc");
            if (fileInputStream != null) {
                int filelen = fileInputStream.available();
                //文件太大时内存不能一次读出,要循环
                byte a[] = new byte[filelen];
                fileInputStream.read(a);
                out.write(a);
            }
            fileInputStream.close();
            out.close();
        }
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass().getName());
        out.println(", using the POST method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    } 
}

到此从服务器端下载文件结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值