Java文件下载

在项目里面新建一个文件夹存放要下载的文件,然后再页面输入要下载的文件名称,进行下载。

如果不输入下载的名称直接下载,会提示下载的不是一个文件,如果下载的文件再目录里面不存在,就会提示下载的文件不存在。如果下载的时候出现乱码的问题,就去写一个设置字符编码的类,然后用字符编码的类web.xml配置过滤器:

<filter>

<filter-name>SetCharacterEncodingFilter</filter-name>

<filter-class>com.xj.filter.SetCharacterEncodingFilter</filter-class>

<!—去写一个字符编码的类解决中文乱码问题 -->

<init-param>

<param-name>encoding</param-name><!-- 初始化配置 -->

<param-value>utf-8</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>SetCharacterEncodingFilter</filter-name>

<url-pattern>/servlet/*</url-pattern><!-- 拦截所有的servlet -->

</filter-mapping>

下面请看下载的例子:

下面请看代码:

  <form action="${ctx}/servlet/XiaZaiServlet" method="post" style="margin-left:35px; ">

    <table>

               <tr><td  style="font-size:14px;">文件名称:</td>

<td><input type="text" name="fileName"/></td></tr>

               <tr><td><button class="btn btn-info" type="submit">下载</button></td></tr>

    </table>

</form>

public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

String fileName = request.getParameter("fileName");

// 获取要下载的文件绝对路径, getRealPath这个是在web项目中获取的绝对路径,

通过相对路径转换成绝对路径. 然后在xiazai的这个文件目录拼接传过来的文件名称

String fullFileName = getServletContext().getRealPath("/xiazai/" + fileName);

        File file=new File(fullFileName);

        if (file.exists()) {

            //当确定了它是一个文件以后,就去下载

            if (file.isFile()) {

    // 设置文件的MIME类型,告诉浏览器要进行文件的输出,然后浏览器检测是这个类型的,然后就下载包

response.setContentType(getServletContext().getMimeType(fileName));

// 设置Content-Disposition 设置下载的文件名称,这个是指定下载的文件名称

这个名称可以随便给,也可以是上传的那个名称

response.setHeader("Content-Disposition", "attachment;filename="+fileName);

                InputStream is=new FileInputStream(file);//输入流

                OutputStream os=response.getOutputStream();//输出到response

                //读取文件,把文件放到输出流

                int len=0;

                byte[] bs=new byte[1024];

                while ((len=is.read(bs))!=-1) {

                    os.write(bs, 0, len);

                }

                os.close();

                is.close();

            }

            else

            {

        request.setAttribute("strMsg", "下载的不是一个文件");

        request.getRequestDispatcher("../index.jsp").forward(request, response);

            }

        } else {

       request.setAttribute("strMsg", "下载的文件不存在");

        request.getRequestDispatcher("../index.jsp").forward(request, response);

        }

    }

}

下载的结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值