使用response下载文件

前言:

经常在网上点开一个链接,就可以让你下载一个文件,比如jar,jdk等的文件。就通过response实现这种下载文件、

使用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

回到顶部