jsp实现文件的下载

您所在的位置:网站首页 jsp作品 jsp实现文件的下载

jsp实现文件的下载

#jsp实现文件的下载| 来源: 网络整理| 查看: 265

文章目录 一、文件的下载1.1 底层的逻辑(图例)1.2 实例代码1.3 下载文件无法命名为中文解决方法

一、文件的下载 1.1 底层的逻辑(图例)

在这里插入图片描述

1.2 实例代码

首先,我们把要下载的文件放到file目录下,这个file目录是webapp的子目录 在这里插入图片描述

然后写一个servlet程序如下

package com.hstc.edu; import org.apache.commons.io.IOUtils; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class Download extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.获取下载的文件名 String downloadFile = "1.jpeg"; //2.用ServletContext对象读取下载的内容 ServletContext servletContext = getServletContext(); //获取文件类型 String mimeType = servletContext.getMimeType("/file/"+downloadFile); //这里的/file,/是webapp目录,把预下载的内容放到输入流 InputStream inputStream = servletContext.getResourceAsStream("/file/"+downloadFile); //3.传之前,通过响应头告诉客户端返回的数据类型 resp.setContentType(mimeType); System.out.println("下载的类型:"+mimeType); //4.告诉客户端收到的数据是用于下载使用(还是使用响应头) //Content-Disposition 响应头,表示收到的数据要怎么处理 //attachment 表示附件,表示下载使用 //filename=文件名 表示指定下载的文件名(这里的文件名是用户接收到的文件名,也可以任意取) resp.setHeader("Content-Disposition","attachment; filename="+downloadFile); //5.把下载的内容传给客户端 //获取响应的输出流 OutputStream outputStream = resp.getOutputStream(); //读取输入流中的数据并复制给输出流,输出流把数据给客户端 IOUtils.copy(inputStream,outputStream); } }

然后我们在web.xml注册该servlet

Download com.hstc.edu.Download Download /download

之后进入该servlet可以看到下载成功: 在这里插入图片描述 注意:上面那段代码不可以下载dog.jpeg文件(会报服务器500错误,貌似只能下载数字名称的文件),也不能把文件名命名为中文(会无法显示中文)。 比如,让客户端下载的时候显示 猫.jpeg,那么会是这种结果。(下面有解决的方法) 在这里插入图片描述 在这里插入图片描述

1.3 下载文件无法命名为中文解决方法

在这里插入图片描述 把上面的代码改为: 在这里插入图片描述 想复制的请在下方领取(这里的URLEncoder导入的是import java.net.URLEncoder;)。

resp.setHeader("Content-Disposition","attachment; filename="+ URLEncoder.encode("猫.jpeg","UTF-8"));

此时,就可以成功下载中文名的文件啦。 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3