sevlet实现下载文件功能

简介: 希望做一个小板块,实现文件的上传和下载,那么上传实现了,就需要实现下载,阅读了各位的博客总结了一下。在网页中通过超链接是可以访问我的资源的,浏览器不可访问的资源他就会下载到本地,像一些浏览器可以直接访问的如图片,txt文件浏览器会直接打开。这就需要我们在sevlet中统一处理文件下载。

希望做一个小板块,实现文件的上传和下载,那么上传实现了,就需要实现下载,阅读了各位的博客总结了一下。在网页中通过超链接是可以访问我的资源的,浏览器不可访问的资源他就会下载到本地,像一些浏览器可以直接访问的如图片,txt文件浏览器会直接打开。这就需要我们在sevlet中统一处理文件下载。


在sevlet中,首先要获得jsp或html中的相应,文件名,通过文件名构建路径得到资源,在设置response的一些参数(要下载的)。这样之后使用io读取文件,在读入文件(不设置绝对路径)时候就是自动保存在浏览器默认位置。要下载文件的路径为:


20180526113142108.png



sevlet核心代码:


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class download extends HttpServlet {
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 String filename= request.getParameter("filename");//获取文件名
    response.setContentType("text/html");
    System.out.println(filename);
    //设置文件MIME类型 
 response.setContentType(getServletContext().getMimeType(filename)); 
 //设置Content-Disposition 
 response.setHeader("Content-Disposition", "attachment;filename=" filename);
 String fullFileName = getServletContext().getRealPath("/image/" filename); //获取绝对路径
 InputStream in = new FileInputStream(fullFileName); 
 OutputStream out = response.getOutputStream(); 
    //PrintWriter out = response.getWriter();
 int b=0;
 while((b=in.read())!=-1)
 {
  out.write(b);
 }
    in.close();
    out.close();
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  this.doGet(request, response);
  }
}


点击去访问


20180526113259352.png


文件下载成功,放置在默认下载路径。


至于大文件可以加缓存下载优化,其他优化的不太清楚。知道的话可以一起讨论。

目录
打赏
0
0
0
0
18
分享
相关文章
|
3月前
|
PeopleSoft中的文件上传与下载:实现与优化
PeopleSoft中的文件上传与下载:实现与优化
112 7
32 单文件上传
路老师分享PHP文件上传教程,涵盖配置php.ini、使用$_FILES变量和move_uploaded_file()函数等关键步骤,帮助你轻松实现单文件上传功能。纯干货,技术知识分享。
64 1
C#一分钟浅谈:文件上传与下载功能实现
【10月更文挑战第2天】在Web应用开发中,文件的上传与下载是常见需求。本文从基础入手,详细讲解如何在C#环境下实现文件上传与下载。首先介绍前端表单设计及后端接收保存方法,使用`<input type="file">`与`IFormFile`接口;接着探讨错误处理与优化策略,如安全性验证和路径管理;最后讲解文件下载的基本步骤,包括确定文件位置、设置响应头及发送文件流。此外,还提供了进阶技巧,如并发处理、大文件分块上传及进度监控,帮助开发者构建更健壮的应用系统。
368 15
VForm3的文件上传方式
VForm3的文件上传方式
360 0
前端下载文件的几种方式
前端下载文件的几种方式
1248 0
文件上传与下载
文件上传与下载 文件上传也称为upload,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发微博、发微信朋友圈都用到了文件上传功能。 文件上传时,对页面的form表单有如下要求: method=“post” 采用post方式提交数据 enctype=“multipart/form-data” 采用multipart格式上传文件 type=“file” 使用input的file控件上传
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等