使用response下载文件
前言:
经常在网上点开一个链接,就可以让你下载一个文件,比如jar,jdk等的文件。就通过response实现这种下载文件、
代码:
在maven项目的resources下放一个图片:
import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.FileInputStream;import java.io.IOException;import java.net.URL;import java.net.URLEncoder;publicclass Resopn下载文件 extends HttpServlet {@Override
protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、获取要下载文件的绝对路径String realPath = "F:\\Maven\\web-maven\\servlet-03\\target\\classes\\壁纸.png";
System.out.println("下载的文件路径" + realPath);
//2、下载的文件名是什么[截取文件绝对路径的最后一个\后面的字符]
//获取的路径【不可行】F:\Maven\web-maven\servlet-03\target\servlet-03\壁纸.png
//右键复制的路径【可以】F:\Maven\web-maven\servlet-03\target\classes\壁纸.png
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
//3、让浏览器能够支持我们下载的文件[如果文件名是中文就需要转码]
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
//4、获取下载文件的输入流
FileInputStream fis = new FileInputStream(realPath);
//5、创建缓冲区
int len = 0;
byte[] bytes = newbyte[1024];
//6、创建输出流
ServletOutputStream sot = response.getOutputStream();
//7、写出文件
while ((len = fis.read(bytes)) != -1) {
sot.write(bytes, 0, len);
sot.flush();
}
//8、关闭流
sot.close();
fis.close();
}
}
先码后看,这里没有什么难理解的,就是第三步是比较生疏的,要用的话就上网查询一下就好了。
以上是 使用response下载文件 的全部内容, 来源链接: utcz.com/a/76183.html