欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

用Servlet把文件写到Respond输出流里面供用户下载,respond输出流,download.jav

来源: javaer 分享于  点击 28794 次 点评:30

用Servlet把文件写到Respond输出流里面供用户下载,respond输出流,download.jav


download.java里面的代码,获取服务端存放文件的真实路径之后,把这个文件先写到缓冲区,再把缓冲区的东西写到respond输出流供用户下载。```java import java.io.;
import java.net.
;
import javax.servlet.;
import javax.servlet.http.
;
import javax.servlet.annotation.*;

@WebServlet(name = "download", urlPatterns = { "/download" })  public class download extends HttpServlet {      private static final long serialVersionUID = 1L;    protected void service(HttpServletRequest request,              HttpServletResponse response) throws ServletException, IOException {          String filePath = this.getServletContext().getRealPath("/");// 获取真实路径          String downloadFilename = "中文是没有问题的.jpg";// 在下载框默认显示的文件名          downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");          // 对默认下载的文件名编码。不编码的结果就是,在客户端下载时文件名乱码          File file = new File(filePath + File.separator + "Chrysanthemum.jpg");          if (file.exists()) {              // 写明要下载的文件的大小              response.setContentLength((int) file.length());              response.setHeader("Content-Disposition", "attachment;filename="                      + downloadFilename);// 设置在下载框默认显示的文件名              response.setContentType("application/octet-stream");// 指明response的返回对象是文件流              // 读出文件到response              // 这里是先需要把要把文件内容先读到缓冲区              // 再把缓冲区的内容写到response的输出流供用户下载              FileInputStream fileInputStream = new FileInputStream(file);              BufferedInputStream bufferedInputStream = new BufferedInputStream(                      fileInputStream);              byte[] b = new byte[bufferedInputStream.available()];              bufferedInputStream.read(b);              OutputStream outputStream = response.getOutputStream();              outputStream.write(b);              // 人走带门              bufferedInputStream.close();              outputStream.flush();              outputStream.close();          }      }  }

```

相关栏目:

用户点评