Java中都通用文件下载(ContentType、文件头、response、out四步骤)

Java中都通用文件下载(ContentType、文件头、response、out四步骤)

新浪微博:IT国子监(记得关注噢) http://weibo.com/itguozijian

 

我们就直接切入主题啦,文件下载只需要四步:

1.设置文件ContentType类型

2.设置文件头

3.通过response获取ServletOutputStream对象(out)

4.写到输出流(out)中

下载代码:

这里我使用的是SpringMVC,不过它在这里的唯一用途就是用来获取ServletContext对象,这个对象的用途,下面实例中有说明

下载,需要用到两个jar包:commons-fileupload.jar和commons-io.jar

Java代码

  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.context.ServletContextAware;
  4. import javax.servlet.ServletContext;
  5. import javax.servlet.ServletOutputStream;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.*;
  8. @Controller
  9. public class FileController implements ServletContextAware{
  10. //Spring这里是通过实现ServletContextAware接口来注入ServletContext对象
  11. private ServletContext servletContext;
  12. @RequestMapping("file/download")
  13. public void fileDownload(HttpServletResponse response){
  14. //获取网站部署路径(通过ServletContext对象),用于确定下载文件位置,从而实现下载
  15. String path = servletContext.getRealPath("/");
  16. //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
  17. response.setContentType("multipart/form-data");
  18. //2.设置文件头:最后一个参数是设置下载文件名(假如我们叫a.pdf)
  19. response.setHeader("Content-Disposition", "attachment;fileName="+"a.pdf");
  20. ServletOutputStream out;
  21. //通过文件路径获得File对象(假如此路径中有一个download.pdf文件)
  22. File file = new File(path + "download/" + "download.pdf");
  23. try {
  24. FileInputStream inputStream = new FileInputStream(file);
  25. //3.通过response获取ServletOutputStream对象(out)
  26. out = response.getOutputStream();
  27. int b = 0;
  28. byte[] buffer = new byte[512];
  29. while (b != -1){
  30. b = inputStream.read(buffer);
  31. //4.写到输出流(out)中
  32. out.write(buffer,0,b);
  33. }
  34. inputStream.close();
  35. out.close();
  36. out.flush();
  37. } catch (IOException e) {
  38. e.printStackTrace();
  39. }
  40. }
  41. @Override
  42. public void setServletContext(ServletContext servletContext) {
  43. this.servletContext = servletContext;
  44. }
  45. }
时间: 2024-08-25 08:15:09

Java中都通用文件下载(ContentType、文件头、response、out四步骤)的相关文章

文件下载(只需要简单的四步),Java中都通用

我们就直接切入主题啦,文件下载只需要四步: 1.设置文件ContentType类型 2.设置文件头 3.通过response获取ServletOutputStream对象(out) 4.写到输出流(out)中 下载代码: 这里我使用的是SpringMVC,不过它在这里的唯一用途就是用来获取ServletContext对象,这个对象的用途,下面实例中有说明 下载,需要用到两个jar包:commons-fileupload.jar和commons-io.jar import org.springfr

Ubuntu&红帽的vim通用配置(文件头+一键编译执行C/C++/Java单文件)

vim是一款功能很强大的编辑器,可能网上的大神们配置的比较复杂.功能也很多.我这里的配置能够满足基本需求.快速且通用,只要大家将自己的vimrc文件打开按照我的截图添加几行代码即可解决. 大家直接看我的配置文件吧 先讲一下ubuntu与redhat下打开配置文件vimrc的方法 *在redhat下 首先切换到root.然后输入 vim /etc/vimrc 在ubuntu下 直接输入 sudo vim /etc/vim/vimrc 打开配置文件vimrc之后按照下面图示中添加代码即可 这里的配置

java通过文件头来判断文件类型

import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.Map.Entry; /** * @Description 根据的文件头来判断文件类型 * @author LJ * @Version v1.0 */ public class GetFileTypeByHead { public static void main(String[] args)

Eclipse中java文件头注释格式设置

Eclipse中java文件头注释格式设置 Eclipse中java文件头注释格式设置 windows->preferences->java->Code Templates->comments->Type->edit Eclipse注释规范模版总结 新建类文件 /** * @ClassName:     ${file_name} * @Description:   ${todo}(用一句话描述该文件做什么) * * @author          ${user} * 

常用文件的文件头(附JAVA测试类)

1. MIDI (mid),文件头:4D546864 2. JPEG (jpg),文件头:FFD8FF 3. PNG (png),文件头:89504E47 4. GIF (gif),文件头:47494638 5. TIFF (tif),文件头:49492A00 6. Windows Bitmap (bmp),文件头:424D 7. CAD (dwg),文件头:41433130 8. Adobe Photoshop (psd),文件头:38425053 9. Rich Text Format (r

response对象处理HTTP文件头(禁用缓存、设置页面自动刷新、定时跳转网页)

response对象处理HTTP文件头 制作人:全心全意 禁用缓存 在默认情况下,浏览器将会对显示的网页内容进行缓存.这样,当用户再次访问相关网页时,浏览器会判断网页是否有变化,如果没有变化则直接显示缓存中的内容,这样可以提高网页的显示速度.对于一些安全性要求较高的网站,通常需要禁用缓存. 通过设置HTTP头的方法实现禁用缓存: <% response.setHeader("Cache-Control", "no-store"); response.setDa

UTF-8 编码的文件在处理时要注意 BOM 文件头问题

最近在给项目团队开发一个基于 Java 的通用的 XML 分析器时,设计了一个方法,能够读取现成的 XML 文件进行分析处理,当然 XML 都是采用 UTF-8 进行编码的.但是在用 UltraEdit 写了一个测试用的 UTF-8 XML 文件后,程序在读取该文件时发生错误: Parse Fatal Error at line 1 column 1: 前言中不允许有内容.org.xml.sax.SAXParseException: Content is not allowed in prolo

java—servlet实现文件下载功能

最近在学javaweb技术,利用所学知识做了一个简单的项目,在服务器上实现给用户下载文件的功能.自动列出文件夹下的文件提供下载,支持中文文件名. 结果图 其中使用了tomcat来部署服务器,代码中应用了少许EL表达式和JSTL标签,使用了jsp和servlet,当然还有java和http的基础知识,但是个人觉得重点是http的Content-Disposition头信息和Content-type头信息在servlet中下载方面的应用,详见DownloadPageServlet.java源码. 关

java/struts/Servlet文件下载与ftp文件下载

1.前端代码 使用超链接到Struts的Action或Servlet <a target="_blank" href="ftpFileAction!downloadFile.action?transUrl=ftp://10.0.2.1/tazi/a.xml">请点击下载</a> 2.后台代码 Action或Servlet String s1=transUrl; // transUrl是前台接受的参数 s1=s1.substring(6); s